diff --git a/.eslintrc.js b/.eslintrc.js
index f362cf4e517f77c33af4f7f2c49902d514fecc00..678b1528ffd0557f91145a3d2c8eaea67ebac25c 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -8,6 +8,8 @@ module.exports = {
     'plugin:import/errors',
     'plugin:import/warnings',
     'plugin:import/typescript',
+    'plugin:jest/recommended',
+    'plugin:jest/style',
     // https://github.com/typescript-eslint/typescript-eslint/tree/master/packages/eslint-plugin/src/configs
     'plugin:@typescript-eslint/eslint-recommended',
     'plugin:@typescript-eslint/recommended',
diff --git a/lib/config/__snapshots__/index.spec.ts.snap b/lib/config/__snapshots__/index.spec.ts.snap
index 39e520ef106e4be1a10078c74eaadf486f4f06ec..35ba75877a04c67a6926bdaa38641624517b7940 100644
--- a/lib/config/__snapshots__/index.spec.ts.snap
+++ b/lib/config/__snapshots__/index.spec.ts.snap
@@ -1,595 +1,5 @@
 // Jest Snapshot v1, https://goo.gl/fbAQLP
 
-exports[`config/index mergeChildConfig(parentConfig, childConfig) filterConfig() 1`] = `
-Object {
-  "additionalReviewers": Array [],
-  "aliases": Object {},
-  "allowedPostUpgradeCommands": Array [],
-  "assignAutomerge": false,
-  "assignees": Array [],
-  "assigneesSampleSize": null,
-  "automerge": false,
-  "automergeComment": "automergeComment",
-  "automergeType": "pr",
-  "azureAutoComplete": false,
-  "azureWorkItemId": 0,
-  "baseDir": null,
-  "bbUseDefaultReviewers": true,
-  "binarySource": "auto",
-  "branchName": "{{{branchPrefix}}}{{{managerBranchPrefix}}}{{{branchTopic}}}",
-  "branchTopic": "{{{depNameSanitized}}}-{{{newMajor}}}{{#if isPatch}}.{{{newMinor}}}{{/if}}.x{{#if isLockfileUpdate}}-lockfile{{/if}}",
-  "bumpVersion": null,
-  "cacheDir": null,
-  "commitBody": null,
-  "commitBodyTable": false,
-  "commitMessage": "{{{commitMessagePrefix}}} {{{commitMessageAction}}} {{{commitMessageTopic}}} {{{commitMessageExtra}}} {{{commitMessageSuffix}}}",
-  "commitMessageAction": "Update",
-  "commitMessageExtra": "to {{#if isMajor}}v{{{newMajor}}}{{else}}{{#if isSingleVersion}}v{{{toVersion}}}{{else}}{{{newValue}}}{{/if}}{{/if}}",
-  "commitMessagePrefix": null,
-  "commitMessageSuffix": null,
-  "commitMessageTopic": "dependency {{depName}}",
-  "compatibility": Object {},
-  "composerIgnorePlatformReqs": true,
-  "configWarningReuseIssue": true,
-  "dockerMapDotfiles": false,
-  "dockerUser": null,
-  "dryRun": false,
-  "endpoint": null,
-  "excludeCommitPaths": Array [],
-  "gitAuthor": null,
-  "gitLabAutomerge": false,
-  "gitPrivateKey": null,
-  "group": Object {
-    "branchTopic": "{{{groupSlug}}}",
-    "commitMessageTopic": "{{{groupName}}}",
-  },
-  "groupName": null,
-  "groupSlug": null,
-  "ignoreNpmrcFile": false,
-  "ignoreScripts": false,
-  "labels": Array [],
-  "lazyGrouping": true,
-  "managerBranchPrefix": "",
-  "masterIssue": false,
-  "masterIssueApproval": false,
-  "masterIssueAutoclose": false,
-  "masterIssueTitle": "Update Dependencies (Renovate Bot)",
-  "onboardingBranch": "renovate/configure",
-  "onboardingPrTitle": "Configure Renovate",
-  "persistRepoData": false,
-  "pinDigests": false,
-  "platform": "github",
-  "postUpdateOptions": Array [],
-  "postUpgradeTasks": Object {
-    "commands": Array [],
-    "fileFilters": Array [],
-  },
-  "prBodyColumns": Array [
-    "Package",
-    "Type",
-    "Update",
-    "Change",
-  ],
-  "prBodyDefinitions": Object {
-    "Change": "\`{{{displayFrom}}}\` -> \`{{{displayTo}}}\`",
-    "Current value": "{{{currentValue}}}",
-    "New value": "{{{newValue}}}",
-    "Package": "{{{depNameLinked}}}",
-    "Package file": "{{{packageFile}}}",
-    "References": "{{{references}}}",
-    "Type": "{{{depType}}}",
-    "Update": "{{{updateType}}}",
-  },
-  "prBodyNotes": Array [],
-  "prConcurrentLimit": 0,
-  "prCreation": "immediate",
-  "prHourlyLimit": 0,
-  "prNotPendingHours": 25,
-  "prPriority": 0,
-  "prTitle": null,
-  "printConfig": false,
-  "productLinks": Object {
-    "documentation": "https://docs.renovatebot.com/",
-    "help": "https://github.com/renovatebot/config-help/issues",
-    "homepage": "https://github.com/renovatebot/renovate",
-  },
-  "pruneStaleBranches": true,
-  "rangeStrategy": "replace",
-  "rebaseLabel": "rebase",
-  "rebaseWhen": "auto",
-  "recreateClosed": false,
-  "requiredStatusChecks": Array [],
-  "reviewers": Array [],
-  "reviewersSampleSize": null,
-  "rollbackPrs": false,
-  "schedule": Array [
-    "at any time",
-  ],
-  "semanticCommitScope": "deps",
-  "semanticCommitType": "chore",
-  "semanticCommits": null,
-  "separateMajorMinor": true,
-  "separateMinorPatch": false,
-  "skipInstalls": null,
-  "stabilityDays": 0,
-  "statusCheckVerify": false,
-  "suppressNotifications": Array [
-    "deprecationWarningIssues",
-  ],
-  "timezone": null,
-  "unicodeEmoji": false,
-  "unpublishSafe": false,
-  "updateLockFiles": true,
-  "versioning": "semver",
-  "vulnerabilityAlerts": Object {
-    "commitMessageSuffix": "[SECURITY]",
-    "groupName": null,
-    "masterIssueApproval": false,
-    "rangeStrategy": "update-lockfile",
-    "schedule": Array [],
-  },
-}
-`;
-
-exports[`config/index mergeChildConfig(parentConfig, childConfig) getManagerConfig() 1`] = `
-Object {
-  "additionalReviewers": Array [],
-  "aliases": Object {},
-  "allowedPostUpgradeCommands": Array [],
-  "assignAutomerge": false,
-  "assignees": Array [],
-  "assigneesSampleSize": null,
-  "autodiscover": false,
-  "autodiscoverFilter": null,
-  "automerge": false,
-  "automergeComment": "automergeComment",
-  "automergeType": "pr",
-  "azureAutoComplete": false,
-  "azureWorkItemId": 0,
-  "baseBranches": Array [],
-  "baseDir": null,
-  "bbUseDefaultReviewers": true,
-  "binarySource": "auto",
-  "branchName": "{{{branchPrefix}}}{{{managerBranchPrefix}}}{{{branchTopic}}}",
-  "branchPrefix": "renovate/",
-  "branchTopic": "{{{depNameSanitized}}}-{{{newMajor}}}{{#if isPatch}}.{{{newMinor}}}{{/if}}.x{{#if isLockfileUpdate}}-lockfile{{/if}}",
-  "bumpVersion": null,
-  "cacheDir": null,
-  "commitBody": null,
-  "commitBodyTable": false,
-  "commitMessage": "{{{commitMessagePrefix}}} {{{commitMessageAction}}} {{{commitMessageTopic}}} {{{commitMessageExtra}}} {{{commitMessageSuffix}}}",
-  "commitMessageAction": "Update",
-  "commitMessageExtra": "to {{#if isMajor}}v{{{newMajor}}}{{else}}{{#if isSingleVersion}}v{{{toVersion}}}{{else}}{{{newValue}}}{{/if}}{{/if}}",
-  "commitMessagePrefix": null,
-  "commitMessageSuffix": null,
-  "commitMessageTopic": "dependency {{depName}}",
-  "compatibility": Object {},
-  "composerIgnorePlatformReqs": true,
-  "configWarningReuseIssue": true,
-  "description": Array [],
-  "digest": Object {
-    "branchTopic": "{{{depNameSanitized}}}-digest",
-    "commitMessageExtra": "to {{newDigestShort}}",
-    "commitMessageTopic": "{{{depName}}} commit hash",
-  },
-  "dockerMapDotfiles": false,
-  "dockerUser": null,
-  "dryRun": false,
-  "enabled": true,
-  "enabledManagers": Array [],
-  "encrypted": null,
-  "endpoint": null,
-  "excludeCommitPaths": Array [],
-  "extends": Array [],
-  "fileMatch": Array [
-    "(^|/)package.json$",
-  ],
-  "followTag": null,
-  "force": null,
-  "forceCli": true,
-  "forkMode": false,
-  "gitAuthor": null,
-  "gitLabAutomerge": false,
-  "gitPrivateKey": null,
-  "group": Object {
-    "branchTopic": "{{{groupSlug}}}",
-    "commitMessageTopic": "{{{groupName}}}",
-  },
-  "groupName": null,
-  "groupSlug": null,
-  "hostRules": Array [
-    Object {
-      "timeout": 60000,
-    },
-  ],
-  "ignoreDeprecated": true,
-  "ignoreDeps": Array [],
-  "ignoreNpmrcFile": false,
-  "ignorePaths": Array [
-    "**/node_modules/**",
-    "**/bower_components/**",
-  ],
-  "ignorePresets": Array [],
-  "ignoreScripts": false,
-  "ignoreUnstable": true,
-  "includeForks": false,
-  "includePaths": Array [],
-  "java": Object {},
-  "labels": Array [],
-  "language": "js",
-  "lazyGrouping": true,
-  "lockFileMaintenance": Object {
-    "branchTopic": "lock-file-maintenance",
-    "commitMessageAction": "Lock file maintenance",
-    "commitMessageExtra": null,
-    "commitMessageTopic": null,
-    "enabled": false,
-    "groupName": null,
-    "prBodyDefinitions": Object {
-      "Change": "All locks refreshed",
-    },
-    "rebaseStalePrs": true,
-    "recreateClosed": true,
-    "schedule": Array [
-      "before 5am on monday",
-    ],
-  },
-  "logContext": null,
-  "logFile": null,
-  "logFileLevel": "debug",
-  "logLevel": "info",
-  "major": Object {},
-  "manager": "npm",
-  "managerBranchPrefix": "",
-  "masterIssue": false,
-  "masterIssueApproval": false,
-  "masterIssueAutoclose": false,
-  "masterIssueTitle": "Update Dependencies (Renovate Bot)",
-  "minor": Object {},
-  "npmToken": null,
-  "npmrc": null,
-  "onboarding": true,
-  "onboardingBranch": "renovate/configure",
-  "onboardingConfig": Object {
-    "$schema": "https://docs.renovatebot.com/renovate-schema.json",
-  },
-  "onboardingPrTitle": "Configure Renovate",
-  "optimizeForDisabled": false,
-  "packageRules": Array [],
-  "password": null,
-  "patch": Object {},
-  "persistRepoData": false,
-  "pin": Object {
-    "commitMessageAction": "Pin",
-    "group": Object {
-      "commitMessageExtra": "",
-      "commitMessageTopic": "dependencies",
-    },
-    "groupName": "Pin Dependencies",
-    "groupSlug": "pin-dependencies",
-    "rebaseWhen": "behind-base-branch",
-    "recreateClosed": true,
-    "unpublishSafe": false,
-  },
-  "pinDigests": false,
-  "platform": "github",
-  "postUpdateOptions": Array [],
-  "postUpgradeTasks": Object {
-    "commands": Array [],
-    "fileFilters": Array [],
-  },
-  "prBodyColumns": Array [
-    "Package",
-    "Type",
-    "Update",
-    "Change",
-  ],
-  "prBodyDefinitions": Object {
-    "Change": "[{{#if displayFrom}}\`{{{displayFrom}}}\` -> {{else}}{{#if currentValue}}\`{{{currentValue}}}\` -> {{/if}}{{/if}}{{#if displayTo}}\`{{{displayTo}}}\`{{else}}\`{{{newValue}}}\`{{/if}}](https://renovatebot.com/diffs/npm/{{replace '/' '%2f' depName}}/{{{fromVersion}}}/{{{toVersion}}})",
-    "Current value": "{{{currentValue}}}",
-    "New value": "{{{newValue}}}",
-    "Package": "{{{depNameLinked}}}",
-    "Package file": "{{{packageFile}}}",
-    "References": "{{{references}}}",
-    "Type": "{{{depType}}}",
-    "Update": "{{{updateType}}}",
-  },
-  "prBodyNotes": Array [],
-  "prCommitsPerRunLimit": 0,
-  "prConcurrentLimit": 0,
-  "prCreation": "immediate",
-  "prFooter": "This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).",
-  "prHourlyLimit": 0,
-  "prNotPendingHours": 25,
-  "prPriority": 0,
-  "prTitle": null,
-  "printConfig": false,
-  "privateKey": null,
-  "productLinks": Object {
-    "documentation": "https://docs.renovatebot.com/",
-    "help": "https://github.com/renovatebot/config-help/issues",
-    "homepage": "https://github.com/renovatebot/renovate",
-  },
-  "pruneStaleBranches": true,
-  "rangeStrategy": "replace",
-  "rebaseLabel": "rebase",
-  "rebaseWhen": "auto",
-  "recreateClosed": false,
-  "regexManagers": Array [],
-  "registryUrls": null,
-  "repositories": Array [],
-  "requireConfig": true,
-  "requiredStatusChecks": Array [],
-  "respectLatest": true,
-  "reviewers": Array [],
-  "reviewersSampleSize": null,
-  "rollbackPrs": true,
-  "schedule": Array [
-    "at any time",
-  ],
-  "semanticCommitScope": "deps",
-  "semanticCommitType": "chore",
-  "semanticCommits": null,
-  "separateMajorMinor": true,
-  "separateMinorPatch": false,
-  "separateMultipleMajor": false,
-  "skipInstalls": null,
-  "stabilityDays": 0,
-  "statusCheckVerify": false,
-  "supportPolicy": Array [],
-  "suppressNotifications": Array [
-    "deprecationWarningIssues",
-  ],
-  "timezone": null,
-  "token": null,
-  "trustLevel": "low",
-  "unicodeEmoji": false,
-  "unpublishSafe": false,
-  "updateLockFiles": true,
-  "updateNotScheduled": true,
-  "username": null,
-  "versioning": "npm",
-  "vulnerabilityAlerts": Object {
-    "commitMessageSuffix": "[SECURITY]",
-    "groupName": null,
-    "masterIssueApproval": false,
-    "rangeStrategy": "update-lockfile",
-    "schedule": Array [],
-  },
-  "yarnrc": null,
-}
-`;
-
-exports[`config/index mergeChildConfig(parentConfig, childConfig) getManagerConfig() 2`] = `
-Object {
-  "additionalReviewers": Array [],
-  "aliases": Object {},
-  "allowedPostUpgradeCommands": Array [],
-  "assignAutomerge": false,
-  "assignees": Array [],
-  "assigneesSampleSize": null,
-  "autodiscover": false,
-  "autodiscoverFilter": null,
-  "automerge": false,
-  "automergeComment": "automergeComment",
-  "automergeType": "pr",
-  "azureAutoComplete": false,
-  "azureWorkItemId": 0,
-  "baseBranches": Array [],
-  "baseDir": null,
-  "bbUseDefaultReviewers": true,
-  "binarySource": "auto",
-  "branchName": "{{{branchPrefix}}}{{{managerBranchPrefix}}}{{{branchTopic}}}",
-  "branchPrefix": "renovate/",
-  "branchTopic": "{{{depNameSanitized}}}-{{{newMajor}}}{{#if isPatch}}.{{{newMinor}}}{{/if}}.x{{#if isLockfileUpdate}}-lockfile{{/if}}",
-  "bumpVersion": null,
-  "cacheDir": null,
-  "commitBody": null,
-  "commitBodyTable": false,
-  "commitMessage": "{{{commitMessagePrefix}}} {{{commitMessageAction}}} {{{commitMessageTopic}}} {{{commitMessageExtra}}} {{{commitMessageSuffix}}}",
-  "commitMessageAction": "Update",
-  "commitMessageExtra": "to {{#if isMajor}}v{{{newMajor}}}{{else}}{{#if isSingleVersion}}v{{{toVersion}}}{{else}}{{{newValue}}}{{/if}}{{/if}}",
-  "commitMessagePrefix": null,
-  "commitMessageSuffix": null,
-  "commitMessageTopic": "dependency {{depName}}",
-  "compatibility": Object {},
-  "composerIgnorePlatformReqs": true,
-  "configWarningReuseIssue": true,
-  "description": Array [],
-  "digest": Object {
-    "branchTopic": "{{{depNameSanitized}}}-digest",
-    "commitMessageExtra": "to {{newDigestShort}}",
-    "commitMessageTopic": "{{{depName}}} commit hash",
-    "enabled": false,
-  },
-  "dockerMapDotfiles": false,
-  "dockerUser": null,
-  "dryRun": false,
-  "enabled": true,
-  "enabledManagers": Array [],
-  "encrypted": null,
-  "endpoint": null,
-  "excludeCommitPaths": Array [],
-  "extends": Array [],
-  "fileMatch": Array [
-    "\\\\.html?$",
-  ],
-  "followTag": null,
-  "force": null,
-  "forceCli": true,
-  "forkMode": false,
-  "gitAuthor": null,
-  "gitLabAutomerge": false,
-  "gitPrivateKey": null,
-  "group": Object {
-    "branchTopic": "{{{groupSlug}}}",
-    "commitMessageTopic": "{{{groupName}}}",
-  },
-  "groupName": null,
-  "groupSlug": null,
-  "hostRules": Array [
-    Object {
-      "timeout": 60000,
-    },
-  ],
-  "ignoreDeprecated": true,
-  "ignoreDeps": Array [],
-  "ignoreNpmrcFile": false,
-  "ignorePaths": Array [
-    "**/node_modules/**",
-    "**/bower_components/**",
-  ],
-  "ignorePresets": Array [],
-  "ignoreScripts": false,
-  "ignoreUnstable": true,
-  "includeForks": false,
-  "includePaths": Array [],
-  "java": Object {},
-  "labels": Array [],
-  "language": undefined,
-  "lazyGrouping": true,
-  "lockFileMaintenance": Object {
-    "branchTopic": "lock-file-maintenance",
-    "commitMessageAction": "Lock file maintenance",
-    "commitMessageExtra": null,
-    "commitMessageTopic": null,
-    "enabled": false,
-    "groupName": null,
-    "prBodyDefinitions": Object {
-      "Change": "All locks refreshed",
-    },
-    "rebaseStalePrs": true,
-    "recreateClosed": true,
-    "schedule": Array [
-      "before 5am on monday",
-    ],
-  },
-  "logContext": null,
-  "logFile": null,
-  "logFileLevel": "debug",
-  "logLevel": "info",
-  "major": Object {},
-  "manager": "html",
-  "managerBranchPrefix": "",
-  "masterIssue": false,
-  "masterIssueApproval": false,
-  "masterIssueAutoclose": false,
-  "masterIssueTitle": "Update Dependencies (Renovate Bot)",
-  "minor": Object {},
-  "npmToken": null,
-  "npmrc": null,
-  "onboarding": true,
-  "onboardingBranch": "renovate/configure",
-  "onboardingConfig": Object {
-    "$schema": "https://docs.renovatebot.com/renovate-schema.json",
-  },
-  "onboardingPrTitle": "Configure Renovate",
-  "optimizeForDisabled": false,
-  "packageRules": Array [],
-  "password": null,
-  "patch": Object {},
-  "persistRepoData": false,
-  "pin": Object {
-    "commitMessageAction": "Pin",
-    "group": Object {
-      "commitMessageExtra": "",
-      "commitMessageTopic": "dependencies",
-    },
-    "groupName": "Pin Dependencies",
-    "groupSlug": "pin-dependencies",
-    "rebaseWhen": "behind-base-branch",
-    "recreateClosed": true,
-    "unpublishSafe": false,
-  },
-  "pinDigests": false,
-  "platform": "github",
-  "postUpdateOptions": Array [],
-  "postUpgradeTasks": Object {
-    "commands": Array [],
-    "fileFilters": Array [],
-  },
-  "prBodyColumns": Array [
-    "Package",
-    "Type",
-    "Update",
-    "Change",
-  ],
-  "prBodyDefinitions": Object {
-    "Change": "\`{{{displayFrom}}}\` -> \`{{{displayTo}}}\`",
-    "Current value": "{{{currentValue}}}",
-    "New value": "{{{newValue}}}",
-    "Package": "{{{depNameLinked}}}",
-    "Package file": "{{{packageFile}}}",
-    "References": "{{{references}}}",
-    "Type": "{{{depType}}}",
-    "Update": "{{{updateType}}}",
-  },
-  "prBodyNotes": Array [],
-  "prCommitsPerRunLimit": 0,
-  "prConcurrentLimit": 0,
-  "prCreation": "immediate",
-  "prFooter": "This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).",
-  "prHourlyLimit": 0,
-  "prNotPendingHours": 25,
-  "prPriority": 0,
-  "prTitle": null,
-  "printConfig": false,
-  "privateKey": null,
-  "productLinks": Object {
-    "documentation": "https://docs.renovatebot.com/",
-    "help": "https://github.com/renovatebot/config-help/issues",
-    "homepage": "https://github.com/renovatebot/renovate",
-  },
-  "pruneStaleBranches": true,
-  "rangeStrategy": "replace",
-  "rebaseLabel": "rebase",
-  "rebaseWhen": "auto",
-  "recreateClosed": false,
-  "regexManagers": Array [],
-  "registryUrls": null,
-  "repositories": Array [],
-  "requireConfig": true,
-  "requiredStatusChecks": Array [],
-  "respectLatest": true,
-  "reviewers": Array [],
-  "reviewersSampleSize": null,
-  "rollbackPrs": false,
-  "schedule": Array [
-    "at any time",
-  ],
-  "semanticCommitScope": "deps",
-  "semanticCommitType": "chore",
-  "semanticCommits": null,
-  "separateMajorMinor": true,
-  "separateMinorPatch": false,
-  "separateMultipleMajor": false,
-  "skipInstalls": null,
-  "stabilityDays": 0,
-  "statusCheckVerify": false,
-  "supportPolicy": Array [],
-  "suppressNotifications": Array [
-    "deprecationWarningIssues",
-  ],
-  "timezone": null,
-  "token": null,
-  "trustLevel": "low",
-  "unicodeEmoji": false,
-  "unpublishSafe": false,
-  "updateLockFiles": true,
-  "updateNotScheduled": true,
-  "username": null,
-  "versioning": "semver",
-  "vulnerabilityAlerts": Object {
-    "commitMessageSuffix": "[SECURITY]",
-    "groupName": null,
-    "masterIssueApproval": false,
-    "rangeStrategy": "update-lockfile",
-    "schedule": Array [],
-  },
-  "yarnrc": null,
-}
-`;
-
 exports[`config/index mergeChildConfig(parentConfig, childConfig) merges 1`] = `
 Object {
   "branchTopic": "lock-file-maintenance",
diff --git a/lib/config/index.spec.ts b/lib/config/index.spec.ts
index fac0d6cc1aa978b847ac34a2e51381ed629ebbb7..7a3534c957cfa26fdad3bc51045105789e61fc9e 100644
--- a/lib/config/index.spec.ts
+++ b/lib/config/index.spec.ts
@@ -14,29 +14,50 @@ describe('config/index', () => {
   describe('.parseConfigs(env, defaultArgv)', () => {
     let configParser: typeof import('.');
     let defaultArgv: string[];
+    let defaultEnv: NodeJS.ProcessEnv;
     beforeEach(async () => {
       jest.resetModules();
       configParser = await import('./index');
       defaultArgv = getArgv();
+      defaultEnv = { RENOVATE_CONFIG_FILE: 'abc' };
       jest.mock('delay', () => Promise.resolve());
     });
     it('supports token in env', async () => {
-      const env: NodeJS.ProcessEnv = { RENOVATE_TOKEN: 'abc' };
-      await configParser.parseConfigs(env, defaultArgv);
+      const env: NodeJS.ProcessEnv = { ...defaultEnv, RENOVATE_TOKEN: 'abc' };
+      const parsedConfig = await configParser.parseConfigs(env, defaultArgv);
+      expect(parsedConfig).toContainEntries([['token', 'abc']]);
     });
+
     it('supports token in CLI options', async () => {
       defaultArgv = defaultArgv.concat([
         '--token=abc',
         '--pr-footer=custom',
         '--log-context=abc123',
       ]);
-      const env: NodeJS.ProcessEnv = {};
-      await configParser.parseConfigs(env, defaultArgv);
+      const parsedConfig = await configParser.parseConfigs(
+        defaultEnv,
+        defaultArgv
+      );
+      expect(parsedConfig).toContainEntries([
+        ['token', 'abc'],
+        ['global', { prFooter: 'custom' }],
+        ['logContext', 'abc123'],
+        ['customPrFooter', true],
+      ]);
     });
+
     it('supports forceCli', async () => {
       defaultArgv = defaultArgv.concat(['--force-cli=false']);
-      const env: NodeJS.ProcessEnv = { RENOVATE_TOKEN: 'abc' };
-      await configParser.parseConfigs(env, defaultArgv);
+      const env: NodeJS.ProcessEnv = {
+        ...defaultEnv,
+        RENOVATE_TOKEN: 'abc',
+      };
+      const parsedConfig = await configParser.parseConfigs(env, defaultArgv);
+      expect(parsedConfig).toContainEntries([
+        ['token', 'abc'],
+        ['force', null],
+      ]);
+      expect(parsedConfig).not.toContainKey('configFile');
     });
     it('supports Bitbucket username/passwod', async () => {
       defaultArgv = defaultArgv.concat([
@@ -44,15 +65,21 @@ describe('config/index', () => {
         '--username=user',
         '--password=pass',
       ]);
-      const env: NodeJS.ProcessEnv = {};
-      await configParser.parseConfigs(env, defaultArgv);
+      const parsedConfig = await configParser.parseConfigs(
+        defaultEnv,
+        defaultArgv
+      );
+      expect(parsedConfig).toContainEntries([
+        ['platform', 'bitbucket'],
+        ['username', 'user'],
+        ['password', 'pass'],
+      ]);
     });
     it('massages trailing slash into endpoint', async () => {
       defaultArgv = defaultArgv.concat([
         '--endpoint=https://github.renovatebot.com/api/v3',
       ]);
-      const env: NodeJS.ProcessEnv = {};
-      const parsed = await configParser.parseConfigs(env, defaultArgv);
+      const parsed = await configParser.parseConfigs(defaultEnv, defaultArgv);
       expect(parsed.endpoint).toEqual('https://github.renovatebot.com/api/v3/');
     });
   });
@@ -120,17 +147,20 @@ describe('config/index', () => {
       const parentConfig = { ...defaultConfig };
       const configParser = await import('./index');
       const config = configParser.getManagerConfig(parentConfig, 'npm');
-      expect(config).toMatchSnapshot();
+      expect(config).toContainEntries([
+        ['fileMatch', ['(^|/)package.json$']],
+        ['rollbackPrs', true],
+      ]);
       expect(
         configParser.getManagerConfig(parentConfig, 'html')
-      ).toMatchSnapshot();
+      ).toContainEntries([['fileMatch', ['\\.html?$']]]);
     });
 
     it('filterConfig()', async () => {
       const parentConfig = { ...defaultConfig };
       const configParser = await import('./index');
       const config = configParser.filterConfig(parentConfig, 'pr');
-      expect(config).toMatchSnapshot();
+      expect(config).toBeObject();
     });
   });
 });
diff --git a/lib/config/migration.spec.ts b/lib/config/migration.spec.ts
index 450e89a812d52e66c3f84ce540e2274d2532a9ea..a34b97b5269dd5633a76e737a494090cd1b94692 100644
--- a/lib/config/migration.spec.ts
+++ b/lib/config/migration.spec.ts
@@ -152,11 +152,11 @@ describe('config/migration', () => {
       );
       expect(migratedConfig).toMatchSnapshot();
       expect(isMigrated).toBe(true);
-      expect(migratedConfig.major.schedule.length).toBe(2);
+      expect(migratedConfig.major.schedule).toHaveLength(2);
       expect(migratedConfig.major.schedule[0]).toEqual('after 10pm');
       expect(migratedConfig.major.schedule[1]).toEqual('before 7am');
       expect(migratedConfig.minor.schedule).toMatchSnapshot();
-      expect(migratedConfig.minor.schedule.length).toBe(2);
+      expect(migratedConfig.minor.schedule).toHaveLength(2);
       expect(migratedConfig.minor.schedule[0]).toEqual(
         'after 10pm every weekday'
       );
diff --git a/lib/config/validation.spec.ts b/lib/config/validation.spec.ts
index f74105a77e2df8715075750e0ea2833e76918718..5c0c219b9e51bef7c0be06f6b5a129cd70721ef7 100644
--- a/lib/config/validation.spec.ts
+++ b/lib/config/validation.spec.ts
@@ -80,7 +80,7 @@ describe('config/validation', () => {
       );
       expect(warnings).toHaveLength(0);
       expect(errors).toHaveLength(1);
-      expect(errors[0].message.includes('ansible')).toBe(true);
+      expect(errors[0].message).toContain('ansible');
     });
     it('included managers of the wrong type', async () => {
       const config = {
diff --git a/lib/datasource/cdnjs/index.spec.ts b/lib/datasource/cdnjs/index.spec.ts
index 1a7a67d83c8eefe4058457100bcbaa320c3436f6..f2d78afb093623333c31e31e0c0abf2a3ceb9f7c 100644
--- a/lib/datasource/cdnjs/index.spec.ts
+++ b/lib/datasource/cdnjs/index.spec.ts
@@ -27,13 +27,13 @@ describe('datasource/cdnjs', () => {
     });
     it('throws for empty result', async () => {
       got.mockResolvedValueOnce(null);
-      await expect(getReleases({ lookupName: 'foo/bar' })).rejects.toThrowError(
+      await expect(getReleases({ lookupName: 'foo/bar' })).rejects.toThrow(
         DATASOURCE_FAILURE
       );
     });
     it('throws for missing fields', async () => {
       got.mockResolvedValueOnce({});
-      await expect(getReleases({ lookupName: 'foo/bar' })).rejects.toThrowError(
+      await expect(getReleases({ lookupName: 'foo/bar' })).rejects.toThrow(
         DATASOURCE_FAILURE
       );
     });
@@ -49,19 +49,19 @@ describe('datasource/cdnjs', () => {
     });
     it('throws for 401', async () => {
       got.mockRejectedValueOnce({ statusCode: 401 });
-      await expect(getReleases({ lookupName: 'foo/bar' })).rejects.toThrowError(
+      await expect(getReleases({ lookupName: 'foo/bar' })).rejects.toThrow(
         DATASOURCE_FAILURE
       );
     });
     it('throws for 429', async () => {
       got.mockRejectedValueOnce({ statusCode: 429 });
-      await expect(getReleases({ lookupName: 'foo/bar' })).rejects.toThrowError(
+      await expect(getReleases({ lookupName: 'foo/bar' })).rejects.toThrow(
         DATASOURCE_FAILURE
       );
     });
     it('throws for 5xx', async () => {
       got.mockRejectedValueOnce({ statusCode: 502 });
-      await expect(getReleases({ lookupName: 'foo/bar' })).rejects.toThrowError(
+      await expect(getReleases({ lookupName: 'foo/bar' })).rejects.toThrow(
         DATASOURCE_FAILURE
       );
     });
@@ -69,7 +69,7 @@ describe('datasource/cdnjs', () => {
       got.mockImplementationOnce(() => {
         throw new Error();
       });
-      await expect(getReleases({ lookupName: 'foo/bar' })).rejects.toThrowError(
+      await expect(getReleases({ lookupName: 'foo/bar' })).rejects.toThrow(
         DATASOURCE_FAILURE
       );
     });
diff --git a/lib/datasource/crate/__snapshots__/index.spec.ts.snap b/lib/datasource/crate/__snapshots__/index.spec.ts.snap
index 2080dcc171aa48acbbfe241e85c4e1dfd7b97203..8cab958d1b4e401393f9a7ea9d3833ac030860d9 100644
--- a/lib/datasource/crate/__snapshots__/index.spec.ts.snap
+++ b/lib/datasource/crate/__snapshots__/index.spec.ts.snap
@@ -1,6 +1,71 @@
 // Jest Snapshot v1, https://goo.gl/fbAQLP
 
-exports[`datasource/crate getReleases processes real data 1`] = `
+exports[`datasource/crate getReleases processes real data: amethyst 1`] = `
+Object {
+  "releases": Array [
+    Object {
+      "version": "0.1.0",
+    },
+    Object {
+      "version": "0.1.1",
+    },
+    Object {
+      "version": "0.1.3",
+    },
+    Object {
+      "version": "0.1.4",
+    },
+    Object {
+      "version": "0.2.1",
+    },
+    Object {
+      "version": "0.3.0",
+    },
+    Object {
+      "version": "0.3.1",
+    },
+    Object {
+      "version": "0.4.0",
+    },
+    Object {
+      "version": "0.4.1",
+    },
+    Object {
+      "version": "0.4.2",
+    },
+    Object {
+      "version": "0.4.3",
+    },
+    Object {
+      "version": "0.5.0",
+    },
+    Object {
+      "version": "0.5.1",
+    },
+    Object {
+      "version": "0.6.0",
+    },
+    Object {
+      "version": "0.7.0",
+    },
+    Object {
+      "version": "0.8.0",
+    },
+    Object {
+      "version": "0.9.0",
+    },
+    Object {
+      "version": "0.10.0",
+    },
+    Object {
+      "isDeprecated": true,
+      "version": "0.10.1",
+    },
+  ],
+}
+`;
+
+exports[`datasource/crate getReleases processes real data: libc 1`] = `
 Object {
   "releases": Array [
     Object {
@@ -204,69 +269,4 @@ Object {
 }
 `;
 
-exports[`datasource/crate getReleases processes real data 2`] = `
-Object {
-  "releases": Array [
-    Object {
-      "version": "0.1.0",
-    },
-    Object {
-      "version": "0.1.1",
-    },
-    Object {
-      "version": "0.1.3",
-    },
-    Object {
-      "version": "0.1.4",
-    },
-    Object {
-      "version": "0.2.1",
-    },
-    Object {
-      "version": "0.3.0",
-    },
-    Object {
-      "version": "0.3.1",
-    },
-    Object {
-      "version": "0.4.0",
-    },
-    Object {
-      "version": "0.4.1",
-    },
-    Object {
-      "version": "0.4.2",
-    },
-    Object {
-      "version": "0.4.3",
-    },
-    Object {
-      "version": "0.5.0",
-    },
-    Object {
-      "version": "0.5.1",
-    },
-    Object {
-      "version": "0.6.0",
-    },
-    Object {
-      "version": "0.7.0",
-    },
-    Object {
-      "version": "0.8.0",
-    },
-    Object {
-      "version": "0.9.0",
-    },
-    Object {
-      "version": "0.10.0",
-    },
-    Object {
-      "isDeprecated": true,
-      "version": "0.10.1",
-    },
-  ],
-}
-`;
-
 exports[`datasource/crate getReleases throws for 5xx 1`] = `[Error: registry-failure]`;
diff --git a/lib/datasource/crate/index.spec.ts b/lib/datasource/crate/index.spec.ts
index ecf31c4e764765196b8d565d5e56815ebce27a22..d30952f093532c3ffd566e6a87e615d065aed73d 100644
--- a/lib/datasource/crate/index.spec.ts
+++ b/lib/datasource/crate/index.spec.ts
@@ -70,7 +70,7 @@ describe('datasource/crate', () => {
       });
       expect(await getReleases({ lookupName: 'some_crate' })).toBeNull();
     });
-    it('processes real data', async () => {
+    it('processes real data: libc', async () => {
       got.mockReturnValueOnce({
         body: res1,
       });
@@ -79,7 +79,7 @@ describe('datasource/crate', () => {
       expect(res).not.toBeNull();
       expect(res).toBeDefined();
     });
-    it('processes real data', async () => {
+    it('processes real data: amethyst', async () => {
       got.mockReturnValueOnce({
         body: res2,
       });
diff --git a/lib/datasource/docker/index.spec.ts b/lib/datasource/docker/index.spec.ts
index 299b6e93b1352e47c16592e561a1460e69c9df44..913f3fd803e00711bde4bb6e0d5eea7ac9ca65c5 100644
--- a/lib/datasource/docker/index.spec.ts
+++ b/lib/datasource/docker/index.spec.ts
@@ -206,7 +206,7 @@ describe('api/docker', () => {
         { lookupName: '123456789.dkr.ecr.us-east-1.amazonaws.com/node' },
         'some-tag'
       );
-      expect(res).toBe(null);
+      expect(res).toBeNull();
       AWSMock.restore('ECR');
     });
     it('continues without token if ECR authentication fails', async () => {
@@ -230,7 +230,7 @@ describe('api/docker', () => {
         { lookupName: '123456789.dkr.ecr.us-east-1.amazonaws.com/node' },
         'some-tag'
       );
-      expect(res).toBe(null);
+      expect(res).toBeNull();
       AWSMock.restore('ECR');
     });
     it('continues without token, when no header is present', async () => {
diff --git a/lib/datasource/git-refs/index.spec.ts b/lib/datasource/git-refs/index.spec.ts
index fdfc939fdac044a555a737236330c4a5920e0e73..107ee992ca5bb15e6c116a3072ee0a7f68b7b75a 100644
--- a/lib/datasource/git-refs/index.spec.ts
+++ b/lib/datasource/git-refs/index.spec.ts
@@ -23,7 +23,7 @@ describe('datasource/git-refs', () => {
         },
       });
       const versions = await getReleases({ lookupName });
-      expect(versions).toEqual(null);
+      expect(versions).toBeNull();
     });
     it('returns nil if remote call throws exception', async () => {
       simpleGit.mockReturnValue({
@@ -32,7 +32,7 @@ describe('datasource/git-refs', () => {
         },
       });
       const versions = await getReleases({ lookupName });
-      expect(versions).toEqual(null);
+      expect(versions).toBeNull();
     });
     it('returns versions filtered from tags', async () => {
       simpleGit.mockReturnValue({
diff --git a/lib/datasource/git-submodules/index.spec.ts b/lib/datasource/git-submodules/index.spec.ts
index 7cb30c60f54ddddb92b4a58f9121a44d67b9674b..e88541e41ee51187cd2c377dc10df488e1d2d162 100644
--- a/lib/datasource/git-submodules/index.spec.ts
+++ b/lib/datasource/git-submodules/index.spec.ts
@@ -18,7 +18,7 @@ describe('datasource/git-submoduless', () => {
         },
       });
       const versions = await getReleases({ lookupName, registryUrls });
-      expect(versions).toEqual(null);
+      expect(versions).toBeNull();
     });
     it('returns null if remote call throws exception', async () => {
       simpleGit.mockReturnValue({
@@ -27,7 +27,7 @@ describe('datasource/git-submoduless', () => {
         },
       });
       const versions = await getReleases({ lookupName, registryUrls });
-      expect(versions).toEqual(null);
+      expect(versions).toBeNull();
     });
     it('returns versions filtered from tags', async () => {
       simpleGit.mockReturnValue({
diff --git a/lib/datasource/git-tags/index.spec.ts b/lib/datasource/git-tags/index.spec.ts
index 7efcb53400f8a913ef141b76be04650dd717d377..d46a7a335fb621e93eb1b26206e2c268cb3678e7 100644
--- a/lib/datasource/git-tags/index.spec.ts
+++ b/lib/datasource/git-tags/index.spec.ts
@@ -23,7 +23,7 @@ describe('datasource/git-tags', () => {
         },
       });
       const versions = await getReleases({ lookupName });
-      expect(versions).toEqual(null);
+      expect(versions).toBeNull();
     });
     it('returns nil if remote call throws exception', async () => {
       simpleGit.mockReturnValue({
@@ -32,7 +32,7 @@ describe('datasource/git-tags', () => {
         },
       });
       const versions = await getReleases({ lookupName });
-      expect(versions).toEqual(null);
+      expect(versions).toBeNull();
     });
     it('returns versions filtered from tags', async () => {
       simpleGit.mockReturnValue({
diff --git a/lib/datasource/go/index.spec.ts b/lib/datasource/go/index.spec.ts
index 0968c089a01bbcd2663ea42ff7e41c518c4b48aa..3ebb1a522e8f105142a0e9701ff948e81046127e 100644
--- a/lib/datasource/go/index.spec.ts
+++ b/lib/datasource/go/index.spec.ts
@@ -141,7 +141,7 @@ describe('datasource/go', () => {
         const prefix = pkg.lookupName.split('/')[3];
         const result = await go.getReleases(pkg);
         expect(result.releases).toHaveLength(1);
-        expect(result.releases[0].version.startsWith(prefix));
+        expect(result.releases[0].version.startsWith(prefix)).toBeFalse();
       }
       expect(got).toHaveBeenCalledTimes(0);
       expect(github.getReleases.mock.calls).toMatchSnapshot();
diff --git a/lib/datasource/hex/index.spec.ts b/lib/datasource/hex/index.spec.ts
index fb6e78f490b6ab6907d36e38f6198bac3c08df14..b0d8e3e51a919506fe5dadf9251bfe566ae3e297 100644
--- a/lib/datasource/hex/index.spec.ts
+++ b/lib/datasource/hex/index.spec.ts
@@ -57,9 +57,9 @@ describe('datasource/hex', () => {
           statusCode: 429,
         })
       );
-      await expect(
-        getReleases({ lookupName: 'some_crate' })
-      ).rejects.toThrowError(DATASOURCE_FAILURE);
+      await expect(getReleases({ lookupName: 'some_crate' })).rejects.toThrow(
+        DATASOURCE_FAILURE
+      );
     });
     it('throws for 5xx', async () => {
       got.mockImplementationOnce(() =>
@@ -67,9 +67,9 @@ describe('datasource/hex', () => {
           statusCode: 502,
         })
       );
-      await expect(
-        getReleases({ lookupName: 'some_crate' })
-      ).rejects.toThrowError(DATASOURCE_FAILURE);
+      await expect(getReleases({ lookupName: 'some_crate' })).rejects.toThrow(
+        DATASOURCE_FAILURE
+      );
     });
     it('returns null for unknown error', async () => {
       got.mockImplementationOnce(() => {
diff --git a/lib/datasource/npm/index.spec.ts b/lib/datasource/npm/index.spec.ts
index 4e05002ee04c1b1ae27f457acbb58dc6eb03d495..16ffd6edce35aae7d9bd34f335262bd1e47a262f 100644
--- a/lib/datasource/npm/index.spec.ts
+++ b/lib/datasource/npm/index.spec.ts
@@ -263,9 +263,11 @@ describe(getName(__filename), () => {
     expect(res).toMatchSnapshot();
   });
   it('resets npmrc', () => {
-    npm.setNpmrc('something=something');
-    npm.setNpmrc('something=something');
+    const npmrcContent = 'something=something';
+    npm.setNpmrc(npmrcContent);
+    npm.setNpmrc(npmrcContent);
     npm.setNpmrc();
+    expect(npm.getNpmrc()).toBeNull();
   });
   it('should use default registry if missing from npmrc', async () => {
     nock('https://registry.npmjs.org').get('/foobar').reply(200, npmResponse);
diff --git a/lib/datasource/npm/index.ts b/lib/datasource/npm/index.ts
index 606041136da752b5d59388d771e4e9d6c4e089ee..d0c7d10a70fed9698f6e18f90a5c3897b244d956 100644
--- a/lib/datasource/npm/index.ts
+++ b/lib/datasource/npm/index.ts
@@ -1,4 +1,4 @@
 export { resetMemCache, resetCache } from './get';
 export { getReleases } from './releases';
-export { setNpmrc } from './npmrc';
+export { getNpmrc, setNpmrc } from './npmrc';
 export { id } from './common';
diff --git a/lib/datasource/npm/npmrc.spec.ts b/lib/datasource/npm/npmrc.spec.ts
index ee4f5e63ec9aa0fc1c6455d1865633fdf4a4acf5..0c8260a261399a2e9507105610503cd0dd7ec038 100644
--- a/lib/datasource/npm/npmrc.spec.ts
+++ b/lib/datasource/npm/npmrc.spec.ts
@@ -16,15 +16,15 @@ describe(getName(__filename), () => {
 
   it('sanitize _auth', () => {
     setNpmrc('_auth=test');
-    expect(sanitize.add).toBeCalledWith('test');
-    expect(sanitize.add).toBeCalledTimes(1);
+    expect(sanitize.add).toHaveBeenCalledWith('test');
+    expect(sanitize.add).toHaveBeenCalledTimes(1);
   });
 
   it('sanitize _authtoken', () => {
     // eslint-disable-next-line no-template-curly-in-string
     setNpmrc('//registry.test.com:_authToken=test\n_authToken=${NPM_TOKEN}');
-    expect(sanitize.add).toBeCalledWith('test');
-    expect(sanitize.add).toBeCalledTimes(1);
+    expect(sanitize.add).toHaveBeenCalledWith('test');
+    expect(sanitize.add).toHaveBeenCalledTimes(1);
   });
 
   it('sanitize _password', () => {
@@ -34,7 +34,7 @@ describe(getName(__filename), () => {
     expect(sanitize.add).toHaveBeenNthCalledWith(1, 'dGVzdA==');
     expect(sanitize.add).toHaveBeenNthCalledWith(2, 'test');
     expect(sanitize.add).toHaveBeenNthCalledWith(3, 'dGVzdDp0ZXN0');
-    expect(sanitize.add).toBeCalledTimes(3);
+    expect(sanitize.add).toHaveBeenCalledTimes(3);
   });
 
   it('sanitize _authtoken with high trust', () => {
@@ -44,8 +44,8 @@ describe(getName(__filename), () => {
       // eslint-disable-next-line no-template-curly-in-string
       '//registry.test.com:_authToken=${TEST_TOKEN}\n_authToken=\nregistry=http://localhost'
     );
-    expect(sanitize.add).toBeCalledWith('test');
-    expect(sanitize.add).toBeCalledTimes(1);
+    expect(sanitize.add).toHaveBeenCalledWith('test');
+    expect(sanitize.add).toHaveBeenCalledTimes(1);
   });
 
   it('ignores localhost', () => {
diff --git a/lib/datasource/nuget/index.spec.ts b/lib/datasource/nuget/index.spec.ts
index 99846bb60e24c0db11d5d1bb76a74c31c475a469..82455298b2b720dbfbfe5c7cf9ddb564b79f7780 100644
--- a/lib/datasource/nuget/index.spec.ts
+++ b/lib/datasource/nuget/index.spec.ts
@@ -209,7 +209,7 @@ describe('datasource/nuget', () => {
         })
       ).toBeNull();
     });
-    it('returns null for non 200 (v3)', async () => {
+    it('returns null for non 200 (v2)', async () => {
       got.mockImplementationOnce(() =>
         Promise.reject({
           statusCode: 500,
diff --git a/lib/datasource/pod/index.spec.ts b/lib/datasource/pod/index.spec.ts
index 5161bbcdeb45e4b81ba3003876c9e556666dc289..2f850fcd2999bf8fa47a5a4fa05793b4d53acaa2 100644
--- a/lib/datasource/pod/index.spec.ts
+++ b/lib/datasource/pod/index.spec.ts
@@ -67,9 +67,7 @@ describe('datasource/cocoapods', () => {
         .scope(cocoapodsHost)
         .get('/all_pods_versions_a_c_b.txt')
         .reply(429);
-      await expect(getPkgReleases(config)).rejects.toThrowError(
-        'registry-failure'
-      );
+      await expect(getPkgReleases(config)).rejects.toThrow('registry-failure');
       expect(httpMock.getTrace()).toMatchSnapshot();
     });
     it('returns null for unknown error', async () => {
diff --git a/lib/datasource/sbt-package/index.spec.ts b/lib/datasource/sbt-package/index.spec.ts
index 6aeffc153c5e236ec769d4a672266d94eabc3ff9..1efe92dd0d0762806de5a759ea23e1e272a6d5a5 100644
--- a/lib/datasource/sbt-package/index.spec.ts
+++ b/lib/datasource/sbt-package/index.spec.ts
@@ -104,7 +104,7 @@ describe('datasource/sbt', () => {
           depName: 'org.scalatest:scalatest',
           registryUrls: ['https://failed_repo/maven'],
         })
-      ).toEqual(null);
+      ).toBeNull();
     });
     it('fetches releases from Maven', async () => {
       expect(
diff --git a/lib/datasource/sbt-plugin/index.spec.ts b/lib/datasource/sbt-plugin/index.spec.ts
index 4fa1f7c514c0ea34ca0c842282731f81f17cbd11..ee59fe64ea42408a3d5bdb2084f531cc3e7f226a 100644
--- a/lib/datasource/sbt-plugin/index.spec.ts
+++ b/lib/datasource/sbt-plugin/index.spec.ts
@@ -103,7 +103,7 @@ describe('datasource/sbt', () => {
           depName: 'org.scalatest:scalatest',
           registryUrls: ['https://failed_repo/maven'],
         })
-      ).toEqual(null);
+      ).toBeNull();
       expect(
         await getPkgReleases({
           versioning: mavenVersioning.id,
@@ -111,7 +111,7 @@ describe('datasource/sbt', () => {
           depName: 'org.scalatest:scalaz',
           registryUrls: [],
         })
-      ).toEqual(null);
+      ).toBeNull();
     });
     it('fetches sbt plugins', async () => {
       expect(
diff --git a/lib/logger/index.spec.ts b/lib/logger/index.spec.ts
index 892cbafb4a1dd71cce513b25dbcac813d7da8c65..7a514ec48c03e13792e667df19684f50c50f319f 100644
--- a/lib/logger/index.spec.ts
+++ b/lib/logger/index.spec.ts
@@ -26,29 +26,29 @@ describe('logger', () => {
     expect(getContext()).toEqual('abc123');
   });
   it('supports logging with metadata', () => {
-    logger.debug({ some: 'meta' }, 'some meta');
+    expect(() => logger.debug({ some: 'meta' }, 'some meta')).not.toThrow();
   });
   it('supports logging with only metadata', () => {
-    logger.debug({ some: 'meta' });
+    expect(() => logger.debug({ some: 'meta' })).not.toThrow();
   });
   it('supports logging without metadata', () => {
-    logger.debug('some meta');
+    expect(() => logger.debug('some meta')).not.toThrow();
   });
 
   it('sets meta', () => {
-    setMeta({ any: 'test' });
+    expect(() => setMeta({ any: 'test' })).not.toThrow();
   });
 
   it('adds meta', () => {
-    addMeta({ new: 'test' });
+    expect(() => addMeta({ new: 'test' })).not.toThrow();
   });
 
   it('removes meta', () => {
-    removeMeta(['new']);
+    expect(() => removeMeta(['new'])).not.toThrow();
   });
 
   it('sets level', () => {
-    levels('stdout', 'debug');
+    expect(() => levels('stdout', 'debug')).not.toThrow();
   });
 
   it('saves errors', () => {
diff --git a/lib/manager/bazel/update.spec.ts b/lib/manager/bazel/update.spec.ts
index 0710daaf984a9df016637e9c90ae7598c0bdeffd..8ababd1faa9965e57d0705a958b528ca67e9c125 100644
--- a/lib/manager/bazel/update.spec.ts
+++ b/lib/manager/bazel/update.spec.ts
@@ -81,7 +81,7 @@ describe('manager/bazel/update', () => {
       });
       expect(res).toMatchSnapshot();
       expect(res).not.toEqual(contentContainerPull);
-      expect(res.includes('# v1.0.0-alpha31.cli-migrations 11/28')).toBe(true);
+      expect(res).toContain('# v1.0.0-alpha31.cli-migrations 11/28');
     });
 
     it('updates commit to tag', async () => {
@@ -108,9 +108,9 @@ describe('manager/bazel/update', () => {
       });
       expect(res).toMatchSnapshot();
       expect(res).not.toEqual(content);
-      expect(
-        res.includes('"aaa09d789f3dba190787f8b4454c7d3c936fe123",  # v1.0.3')
-      ).toBe(true);
+      expect(res).toContain(
+        '"aaa09d789f3dba190787f8b4454c7d3c936fe123",  # v1.0.3'
+      );
     });
     it('updates commit-based http archive', async () => {
       const upgrade = {
diff --git a/lib/manager/cargo/__snapshots__/extract.spec.ts.snap b/lib/manager/cargo/__snapshots__/extract.spec.ts.snap
index eb720e33f12c07990a73cdbec01cb3a6ec54b5f1..680911d6b39a1755a6b6fc6314202e3c5076f0a2 100644
--- a/lib/manager/cargo/__snapshots__/extract.spec.ts.snap
+++ b/lib/manager/cargo/__snapshots__/extract.spec.ts.snap
@@ -1,29 +1,31 @@
 // Jest Snapshot v1, https://goo.gl/fbAQLP
 
-exports[`lib/manager/cargo/extract extractPackageFile() extracts multiple dependencies 1`] = `
+exports[`lib/manager/cargo/extract extractPackageFile() extracts multiple dependencies advanced 1`] = `
 Array [
   Object {
-    "currentValue": "=0.2.43",
+    "currentValue": "0.2.0",
     "datasource": "crate",
-    "depName": "libc",
+    "depName": "amethyst_animation",
     "depType": "dependencies",
     "managerData": Object {
-      "nestedVersion": false,
+      "nestedVersion": true,
     },
+    "skipReason": "path-dependency",
   },
   Object {
-    "currentValue": "1.0.4",
+    "currentValue": "0.3.0",
     "datasource": "crate",
-    "depName": "bitflags",
+    "depName": "amethyst_assets",
     "depType": "dependencies",
     "managerData": Object {
-      "nestedVersion": false,
+      "nestedVersion": true,
     },
+    "skipReason": "path-dependency",
   },
   Object {
-    "currentValue": "=0.1",
+    "currentValue": "0.2.0",
     "datasource": "crate",
-    "depName": "pcap-sys",
+    "depName": "amethyst_audio",
     "depType": "dependencies",
     "managerData": Object {
       "nestedVersion": true,
@@ -31,362 +33,360 @@ Array [
     "skipReason": "path-dependency",
   },
   Object {
-    "currentValue": "0.21.0",
+    "currentValue": "0.6.0",
     "datasource": "crate",
-    "depName": "pnet",
+    "depName": "amethyst_config",
     "depType": "dependencies",
     "managerData": Object {
       "nestedVersion": true,
     },
+    "skipReason": "path-dependency",
   },
   Object {
-    "currentValue": "0.1.0",
+    "currentValue": "0.2.0",
     "datasource": "crate",
-    "depName": "git_dep_with_version",
+    "depName": "amethyst_core",
     "depType": "dependencies",
     "managerData": Object {
       "nestedVersion": true,
     },
-    "skipReason": "git-dependency",
+    "skipReason": "path-dependency",
   },
   Object {
-    "currentValue": "",
+    "currentValue": "0.1.0",
     "datasource": "crate",
-    "depName": "git_dep",
+    "depName": "amethyst_controls",
     "depType": "dependencies",
     "managerData": Object {
-      "nestedVersion": false,
+      "nestedVersion": true,
     },
-    "skipReason": "git-dependency",
+    "skipReason": "path-dependency",
   },
   Object {
-    "currentValue": "0.0.0",
+    "currentValue": "0.1.0",
     "datasource": "crate",
-    "depName": "same_version_1__",
+    "depName": "amethyst_locale",
     "depType": "dependencies",
     "managerData": Object {
-      "nestedVersion": false,
+      "nestedVersion": true,
     },
+    "skipReason": "path-dependency",
   },
   Object {
-    "currentValue": "0.0.0",
+    "currentValue": "0.7",
     "datasource": "crate",
-    "depName": "same_version_1_",
+    "depName": "amethyst_renderer",
     "depType": "dependencies",
     "managerData": Object {
-      "nestedVersion": false,
+      "nestedVersion": true,
     },
+    "skipReason": "path-dependency",
   },
   Object {
-    "currentValue": "0.0.0",
+    "currentValue": "0.3",
     "datasource": "crate",
-    "depName": "same_version_1",
+    "depName": "amethyst_input",
     "depType": "dependencies",
     "managerData": Object {
-      "nestedVersion": false,
+      "nestedVersion": true,
     },
+    "skipReason": "path-dependency",
   },
   Object {
-    "currentValue": "0.4.2",
+    "currentValue": "0.2",
     "datasource": "crate",
-    "depName": "dep1",
+    "depName": "amethyst_ui",
     "depType": "dependencies",
     "managerData": Object {
       "nestedVersion": true,
     },
+    "skipReason": "path-dependency",
   },
   Object {
-    "currentValue": "=0.3.6",
+    "currentValue": "0.2",
     "datasource": "crate",
-    "depName": "winapi",
+    "depName": "amethyst_utils",
     "depType": "dependencies",
     "managerData": Object {
       "nestedVersion": true,
     },
-    "target": "cfg(windows)",
+    "skipReason": "path-dependency",
   },
   Object {
-    "currentValue": "0.2.37",
+    "currentValue": "1.0",
     "datasource": "crate",
-    "depName": "wasm-bindgen",
+    "depName": "derivative",
     "depType": "dependencies",
     "managerData": Object {
       "nestedVersion": false,
     },
-    "target": "cfg(target_arch = \\"wasm32\\")",
   },
   Object {
-    "currentValue": "0.3.14",
+    "currentValue": "0.5",
     "datasource": "crate",
-    "depName": "js-sys",
+    "depName": "fern",
     "depType": "dependencies",
     "managerData": Object {
-      "nestedVersion": false,
+      "nestedVersion": true,
     },
-    "target": "cfg(target_arch = \\"wasm32\\")",
   },
   Object {
-    "currentValue": "",
+    "currentValue": "0.4",
     "datasource": "crate",
-    "depName": "js_relative_import",
+    "depName": "log",
     "depType": "dependencies",
     "managerData": Object {
       "nestedVersion": false,
     },
-    "skipReason": "path-dependency",
-    "target": "cfg(target_arch = \\"wasm32\\")",
   },
   Object {
-    "currentValue": "0.3.14",
+    "currentValue": "1.0.1",
     "datasource": "crate",
-    "depName": "web-sys",
+    "depName": "rayon",
     "depType": "dependencies",
     "managerData": Object {
-      "nestedVersion": true,
+      "nestedVersion": false,
     },
-    "target": "cfg(target_arch = \\"wasm32\\")",
   },
-]
-`;
-
-exports[`lib/manager/cargo/extract extractPackageFile() extracts multiple dependencies 2`] = `
-Array [
   Object {
-    "currentValue": "0.2.0",
+    "currentValue": "0.1",
     "datasource": "crate",
-    "depName": "amethyst_animation",
+    "depName": "rustc_version_runtime",
     "depType": "dependencies",
     "managerData": Object {
-      "nestedVersion": true,
+      "nestedVersion": false,
     },
-    "skipReason": "path-dependency",
   },
   Object {
-    "currentValue": "0.3.0",
+    "currentValue": "0.15",
     "datasource": "crate",
-    "depName": "amethyst_assets",
+    "depName": "winit",
     "depType": "dependencies",
     "managerData": Object {
-      "nestedVersion": true,
+      "nestedVersion": false,
     },
-    "skipReason": "path-dependency",
   },
   Object {
-    "currentValue": "0.2.0",
+    "currentValue": "0.1",
     "datasource": "crate",
-    "depName": "amethyst_audio",
+    "depName": "thread_profiler",
     "depType": "dependencies",
     "managerData": Object {
       "nestedVersion": true,
     },
-    "skipReason": "path-dependency",
   },
   Object {
-    "currentValue": "0.6.0",
+    "currentValue": "0.2",
     "datasource": "crate",
-    "depName": "amethyst_config",
-    "depType": "dependencies",
+    "depName": "amethyst_gltf",
+    "depType": "dev-dependencies",
     "managerData": Object {
       "nestedVersion": true,
     },
     "skipReason": "path-dependency",
   },
   Object {
-    "currentValue": "0.2.0",
+    "currentValue": "0.5.10",
     "datasource": "crate",
-    "depName": "amethyst_core",
-    "depType": "dependencies",
+    "depName": "env_logger",
+    "depType": "dev-dependencies",
     "managerData": Object {
-      "nestedVersion": true,
+      "nestedVersion": false,
     },
-    "skipReason": "path-dependency",
   },
   Object {
-    "currentValue": "0.1.0",
+    "currentValue": "0.6",
     "datasource": "crate",
-    "depName": "amethyst_controls",
-    "depType": "dependencies",
+    "depName": "genmesh",
+    "depType": "dev-dependencies",
     "managerData": Object {
-      "nestedVersion": true,
+      "nestedVersion": false,
     },
-    "skipReason": "path-dependency",
   },
   Object {
-    "currentValue": "0.1.0",
+    "currentValue": "0.2",
     "datasource": "crate",
-    "depName": "amethyst_locale",
-    "depType": "dependencies",
+    "depName": "ron",
+    "depType": "dev-dependencies",
     "managerData": Object {
-      "nestedVersion": true,
+      "nestedVersion": false,
     },
-    "skipReason": "path-dependency",
   },
   Object {
-    "currentValue": "0.7",
+    "currentValue": "1.0",
     "datasource": "crate",
-    "depName": "amethyst_renderer",
-    "depType": "dependencies",
+    "depName": "serde",
+    "depType": "dev-dependencies",
     "managerData": Object {
-      "nestedVersion": true,
+      "nestedVersion": false,
     },
-    "skipReason": "path-dependency",
   },
   Object {
-    "currentValue": "0.3",
+    "currentValue": "1.0",
     "datasource": "crate",
-    "depName": "amethyst_input",
-    "depType": "dependencies",
+    "depName": "serde_derive",
+    "depType": "dev-dependencies",
     "managerData": Object {
-      "nestedVersion": true,
+      "nestedVersion": false,
     },
-    "skipReason": "path-dependency",
   },
   Object {
-    "currentValue": "0.2",
+    "currentValue": "0.1",
     "datasource": "crate",
-    "depName": "amethyst_ui",
-    "depType": "dependencies",
+    "depName": "vergen",
+    "depType": "build-dependencies",
     "managerData": Object {
-      "nestedVersion": true,
+      "nestedVersion": false,
     },
-    "skipReason": "path-dependency",
   },
+]
+`;
+
+exports[`lib/manager/cargo/extract extractPackageFile() extracts multiple dependencies simple 1`] = `
+Array [
   Object {
-    "currentValue": "0.2",
+    "currentValue": "=0.2.43",
     "datasource": "crate",
-    "depName": "amethyst_utils",
+    "depName": "libc",
     "depType": "dependencies",
     "managerData": Object {
-      "nestedVersion": true,
+      "nestedVersion": false,
     },
-    "skipReason": "path-dependency",
   },
   Object {
-    "currentValue": "1.0",
+    "currentValue": "1.0.4",
     "datasource": "crate",
-    "depName": "derivative",
+    "depName": "bitflags",
     "depType": "dependencies",
     "managerData": Object {
       "nestedVersion": false,
     },
   },
   Object {
-    "currentValue": "0.5",
+    "currentValue": "=0.1",
     "datasource": "crate",
-    "depName": "fern",
+    "depName": "pcap-sys",
     "depType": "dependencies",
     "managerData": Object {
       "nestedVersion": true,
     },
+    "skipReason": "path-dependency",
   },
   Object {
-    "currentValue": "0.4",
+    "currentValue": "0.21.0",
     "datasource": "crate",
-    "depName": "log",
+    "depName": "pnet",
     "depType": "dependencies",
     "managerData": Object {
-      "nestedVersion": false,
+      "nestedVersion": true,
     },
   },
   Object {
-    "currentValue": "1.0.1",
+    "currentValue": "0.1.0",
     "datasource": "crate",
-    "depName": "rayon",
+    "depName": "git_dep_with_version",
     "depType": "dependencies",
     "managerData": Object {
-      "nestedVersion": false,
+      "nestedVersion": true,
     },
+    "skipReason": "git-dependency",
   },
   Object {
-    "currentValue": "0.1",
+    "currentValue": "",
     "datasource": "crate",
-    "depName": "rustc_version_runtime",
+    "depName": "git_dep",
     "depType": "dependencies",
     "managerData": Object {
       "nestedVersion": false,
     },
+    "skipReason": "git-dependency",
   },
   Object {
-    "currentValue": "0.15",
+    "currentValue": "0.0.0",
     "datasource": "crate",
-    "depName": "winit",
+    "depName": "same_version_1__",
     "depType": "dependencies",
     "managerData": Object {
       "nestedVersion": false,
     },
   },
   Object {
-    "currentValue": "0.1",
+    "currentValue": "0.0.0",
     "datasource": "crate",
-    "depName": "thread_profiler",
+    "depName": "same_version_1_",
     "depType": "dependencies",
     "managerData": Object {
-      "nestedVersion": true,
+      "nestedVersion": false,
     },
   },
   Object {
-    "currentValue": "0.2",
+    "currentValue": "0.0.0",
     "datasource": "crate",
-    "depName": "amethyst_gltf",
-    "depType": "dev-dependencies",
+    "depName": "same_version_1",
+    "depType": "dependencies",
     "managerData": Object {
-      "nestedVersion": true,
+      "nestedVersion": false,
     },
-    "skipReason": "path-dependency",
   },
   Object {
-    "currentValue": "0.5.10",
+    "currentValue": "0.4.2",
     "datasource": "crate",
-    "depName": "env_logger",
-    "depType": "dev-dependencies",
+    "depName": "dep1",
+    "depType": "dependencies",
     "managerData": Object {
-      "nestedVersion": false,
+      "nestedVersion": true,
     },
   },
   Object {
-    "currentValue": "0.6",
+    "currentValue": "=0.3.6",
     "datasource": "crate",
-    "depName": "genmesh",
-    "depType": "dev-dependencies",
+    "depName": "winapi",
+    "depType": "dependencies",
     "managerData": Object {
-      "nestedVersion": false,
+      "nestedVersion": true,
     },
+    "target": "cfg(windows)",
   },
   Object {
-    "currentValue": "0.2",
+    "currentValue": "0.2.37",
     "datasource": "crate",
-    "depName": "ron",
-    "depType": "dev-dependencies",
+    "depName": "wasm-bindgen",
+    "depType": "dependencies",
     "managerData": Object {
       "nestedVersion": false,
     },
+    "target": "cfg(target_arch = \\"wasm32\\")",
   },
   Object {
-    "currentValue": "1.0",
+    "currentValue": "0.3.14",
     "datasource": "crate",
-    "depName": "serde",
-    "depType": "dev-dependencies",
+    "depName": "js-sys",
+    "depType": "dependencies",
     "managerData": Object {
       "nestedVersion": false,
     },
+    "target": "cfg(target_arch = \\"wasm32\\")",
   },
   Object {
-    "currentValue": "1.0",
+    "currentValue": "",
     "datasource": "crate",
-    "depName": "serde_derive",
-    "depType": "dev-dependencies",
+    "depName": "js_relative_import",
+    "depType": "dependencies",
     "managerData": Object {
       "nestedVersion": false,
     },
+    "skipReason": "path-dependency",
+    "target": "cfg(target_arch = \\"wasm32\\")",
   },
   Object {
-    "currentValue": "0.1",
+    "currentValue": "0.3.14",
     "datasource": "crate",
-    "depName": "vergen",
-    "depType": "build-dependencies",
+    "depName": "web-sys",
+    "depType": "dependencies",
     "managerData": Object {
-      "nestedVersion": false,
+      "nestedVersion": true,
     },
+    "target": "cfg(target_arch = \\"wasm32\\")",
   },
 ]
 `;
diff --git a/lib/manager/cargo/extract.spec.ts b/lib/manager/cargo/extract.spec.ts
index 363d74700d707102df7b5aa42b929050258f3582..54419a9cd32a7a3a3bc7a016422270dee515b3f5 100644
--- a/lib/manager/cargo/extract.spec.ts
+++ b/lib/manager/cargo/extract.spec.ts
@@ -31,24 +31,24 @@ describe('lib/manager/cargo/extract', () => {
     it('returns null for invalid toml', () => {
       expect(extractPackageFile('invalid toml', config)).toBeNull();
     });
-    it('returns null for empty', () => {
+    it('returns null for empty dependencies', () => {
       const cargotoml = '[dependencies]\n';
       expect(extractPackageFile(cargotoml, config)).toBeNull();
     });
-    it('returns null for empty', () => {
+    it('returns null for empty dev-dependencies', () => {
       const cargotoml = '[dev-dependencies]\n';
       expect(extractPackageFile(cargotoml, config)).toBeNull();
     });
-    it('returns null for empty', () => {
+    it('returns null for empty custom target', () => {
       const cargotoml = '[target."foo".dependencies]\n';
       expect(extractPackageFile(cargotoml, config)).toBeNull();
     });
-    it('extracts multiple dependencies', () => {
+    it('extracts multiple dependencies simple', () => {
       const res = extractPackageFile(cargo1toml, config);
       expect(res.deps).toMatchSnapshot();
       expect(res.deps).toHaveLength(15);
     });
-    it('extracts multiple dependencies', () => {
+    it('extracts multiple dependencies advanced', () => {
       const res = extractPackageFile(cargo2toml, config);
       expect(res.deps).toMatchSnapshot();
       expect(res.deps).toHaveLength(18 + 6 + 1);
diff --git a/lib/manager/gomod/update.spec.ts b/lib/manager/gomod/update.spec.ts
index 6fb3eceb0452350656036828bf727c86f85461a6..66e2e0d225e72d745f3bce728b30d1595a50c8fe 100644
--- a/lib/manager/gomod/update.spec.ts
+++ b/lib/manager/gomod/update.spec.ts
@@ -16,7 +16,7 @@ describe('manager/gomod/update', () => {
       };
       const res = updateDependency({ fileContent: gomod1, upgrade });
       expect(res).not.toEqual(gomod1);
-      expect(res.includes(upgrade.newValue)).toBe(true);
+      expect(res).toContain(upgrade.newValue);
     });
     it('replaces two values in one file', () => {
       const upgrade1 = {
@@ -30,7 +30,7 @@ describe('manager/gomod/update', () => {
         upgrade: upgrade1,
       });
       expect(res1).not.toEqual(gomod1);
-      expect(res1.includes(upgrade1.newValue)).toBe(true);
+      expect(res1).toContain(upgrade1.newValue);
       const upgrade2 = {
         depName: 'github.com/aws/aws-sdk-go',
         managerData: { lineNumber: 3 },
@@ -65,8 +65,8 @@ describe('manager/gomod/update', () => {
       };
       const res = updateDependency({ fileContent: gomod1, upgrade });
       expect(res).not.toEqual(gomod2);
-      expect(res.includes(upgrade.newValue)).toBe(true);
-      expect(res.includes('github.com/pkg/errors/v2')).toBe(true);
+      expect(res).toContain(upgrade.newValue);
+      expect(res).toContain('github.com/pkg/errors/v2');
     });
     it('replaces major gopkg.in updates', () => {
       const upgrade = {
@@ -81,9 +81,7 @@ describe('manager/gomod/update', () => {
       const res = updateDependency({ fileContent: gomod1, upgrade });
       expect(res).toMatchSnapshot();
       expect(res).not.toEqual(gomod2);
-      expect(res.includes('gopkg.in/russross/blackfriday.v2 v2.0.0')).toBe(
-        true
-      );
+      expect(res).toContain('gopkg.in/russross/blackfriday.v2 v2.0.0');
     });
     it('returns null if mismatch', () => {
       const upgrade = {
@@ -107,7 +105,7 @@ describe('manager/gomod/update', () => {
       };
       const res = updateDependency({ fileContent: gomod2, upgrade });
       expect(res).not.toEqual(gomod2);
-      expect(res.includes(upgrade.newValue)).toBe(true);
+      expect(res).toContain(upgrade.newValue);
     });
     it('replaces quoted multiline', () => {
       const upgrade = {
@@ -119,7 +117,7 @@ describe('manager/gomod/update', () => {
       const res = updateDependency({ fileContent: gomod2, upgrade });
       expect(res).toMatchSnapshot();
       expect(res).not.toEqual(gomod2);
-      expect(res.includes(upgrade.newValue)).toBe(true);
+      expect(res).toContain(upgrade.newValue);
     });
     it('replaces major multiline', () => {
       const upgrade = {
@@ -133,8 +131,8 @@ describe('manager/gomod/update', () => {
       };
       const res = updateDependency({ fileContent: gomod2, upgrade });
       expect(res).not.toEqual(gomod2);
-      expect(res.includes(upgrade.newValue)).toBe(true);
-      expect(res.includes('github.com/emirpasic/gods/v2')).toBe(true);
+      expect(res).toContain(upgrade.newValue);
+      expect(res).toContain('github.com/emirpasic/gods/v2');
     });
     it('bumps major multiline', () => {
       const upgrade = {
@@ -148,8 +146,8 @@ describe('manager/gomod/update', () => {
       };
       const res = updateDependency({ fileContent: gomod2, upgrade });
       expect(res).not.toEqual(gomod2);
-      expect(res.includes(upgrade.newValue)).toBe(true);
-      expect(res.includes('github.com/src-d/gcfg/v3')).toBe(true);
+      expect(res).toContain(upgrade.newValue);
+      expect(res).toContain('github.com/src-d/gcfg/v3');
     });
     it('update multiline digest', () => {
       const upgrade = {
@@ -163,8 +161,8 @@ describe('manager/gomod/update', () => {
       };
       const res = updateDependency({ fileContent: gomod2, upgrade });
       expect(res).not.toEqual(gomod2);
-      expect(res.includes(upgrade.newDigest)).toBe(false);
-      expect(res.includes(upgrade.newDigest.substring(0, 12))).toBe(true);
+      expect(res).not.toContain(upgrade.newDigest);
+      expect(res).toContain(upgrade.newDigest.substring(0, 12));
     });
     it('skips already-updated multiline digest', () => {
       const upgrade = {
@@ -199,7 +197,7 @@ describe('manager/gomod/update', () => {
       const res = updateDependency({ fileContent: gomod1, upgrade });
       expect(res).not.toEqual(gomod1);
       // Assert that the version still contains +incompatible tag.
-      expect(res.includes(upgrade.newValue + '+incompatible')).toBe(true);
+      expect(res).toContain(upgrade.newValue + '+incompatible');
     });
     it('handles replace line with minor version update', () => {
       const upgrade = {
@@ -210,7 +208,7 @@ describe('manager/gomod/update', () => {
       };
       const res = updateDependency({ fileContent: gomod1, upgrade });
       expect(res).not.toEqual(gomod1);
-      expect(res.includes(upgrade.newValue)).toBe(true);
+      expect(res).toContain(upgrade.newValue);
     });
     it('handles replace line with major version update', () => {
       const upgrade = {
@@ -224,7 +222,7 @@ describe('manager/gomod/update', () => {
       };
       const res = updateDependency({ fileContent: gomod1, upgrade });
       expect(res).not.toEqual(gomod1);
-      expect(res.includes(upgrade.newValue)).toBe(true);
+      expect(res).toContain(upgrade.newValue);
     });
     it('handles replace line with digest', () => {
       const upgrade = {
@@ -240,7 +238,7 @@ describe('manager/gomod/update', () => {
       };
       const res = updateDependency({ fileContent: gomod1, upgrade });
       expect(res).not.toEqual(gomod1);
-      expect(res.includes(upgrade.newDigest.substring(0, 12))).toBe(true);
+      expect(res).toContain(upgrade.newDigest.substring(0, 12));
     });
     it('handles no pinned version to latest available version', () => {
       const upgrade = {
@@ -254,7 +252,7 @@ describe('manager/gomod/update', () => {
       };
       const res = updateDependency({ fileContent: gomod1, upgrade });
       expect(res).not.toEqual(gomod1);
-      expect(res.includes(upgrade.newValue)).toBe(true);
+      expect(res).toContain(upgrade.newValue);
       expect(res).toContain(upgrade.depName + '/v6');
     });
   });
diff --git a/lib/manager/gradle-wrapper/artifacts.spec.ts b/lib/manager/gradle-wrapper/artifacts.spec.ts
index 93fc74bad5a9d2522da9f158e8613adbe7f357d9..6a62ca92018a81e4f8494d745f319fef0e53880f 100644
--- a/lib/manager/gradle-wrapper/artifacts.spec.ts
+++ b/lib/manager/gradle-wrapper/artifacts.spec.ts
@@ -1,3 +1,4 @@
+/* eslint jest/no-standalone-expect: 0 */
 import { exec as _exec } from 'child_process';
 import { resolve } from 'path';
 import { readFile } from 'fs-extra';
diff --git a/lib/manager/gradle/__snapshots__/gradle-updates-report.spec.ts.snap b/lib/manager/gradle/__snapshots__/gradle-updates-report.spec.ts.snap
index b8ace091fd0c8e667017eae821e0e6f21ebde2c4..0b5fdd570394879d83bb8c33509235d7736e61ac 100644
--- a/lib/manager/gradle/__snapshots__/gradle-updates-report.spec.ts.snap
+++ b/lib/manager/gradle/__snapshots__/gradle-updates-report.spec.ts.snap
@@ -1,6 +1,6 @@
 // Jest Snapshot v1, https://goo.gl/fbAQLP
 
-exports[`lib/manager/gradle/gradle-updates-report createRenovateGradlePlugin generates a report for Gradle version 5 1`] = `
+exports[`manager/gradle/gradle-updates-report createRenovateGradlePlugin generates a report for Gradle version 5 1`] = `
 Array [
   Object {
     "dependencies": Array [
@@ -19,7 +19,7 @@ Array [
 ]
 `;
 
-exports[`lib/manager/gradle/gradle-updates-report createRenovateGradlePlugin generates a report for Gradle version 6 1`] = `
+exports[`manager/gradle/gradle-updates-report createRenovateGradlePlugin generates a report for Gradle version 6 1`] = `
 Array [
   Object {
     "dependencies": Array [
diff --git a/lib/manager/gradle/__snapshots__/index.spec.ts.snap b/lib/manager/gradle/__snapshots__/index.spec.ts.snap
index 4250c501d976f7ed833ea8c2a65fda9332f38c1d..b9e1beaac77bf2bf852e899d6f1ad0781c4ddac8 100644
--- a/lib/manager/gradle/__snapshots__/index.spec.ts.snap
+++ b/lib/manager/gradle/__snapshots__/index.spec.ts.snap
@@ -1,6 +1,6 @@
 // Jest Snapshot v1, https://goo.gl/fbAQLP
 
-exports[`manager/gradle extractPackageFile should configure the renovate report plugin 1`] = `
+exports[`manager/gradle/index extractPackageFile should configure the renovate report plugin 1`] = `
 Array [
   Object {
     "cmd": "./gradlew --init-script renovate-plugin.gradle renovate",
@@ -22,7 +22,7 @@ Array [
 ]
 `;
 
-exports[`manager/gradle extractPackageFile should execute gradle if gradlew is not available 1`] = `
+exports[`manager/gradle/index extractPackageFile should execute gradle if gradlew is not available 1`] = `
 Array [
   Object {
     "cmd": "gradle --init-script renovate-plugin.gradle renovate",
@@ -44,7 +44,7 @@ Array [
 ]
 `;
 
-exports[`manager/gradle extractPackageFile should execute gradlew when available 1`] = `
+exports[`manager/gradle/index extractPackageFile should execute gradlew when available 1`] = `
 Array [
   Object {
     "cmd": "./gradlew --init-script renovate-plugin.gradle renovate",
@@ -66,7 +66,7 @@ Array [
 ]
 `;
 
-exports[`manager/gradle extractPackageFile should execute gradlew.bat when available on Windows 1`] = `
+exports[`manager/gradle/index extractPackageFile should execute gradlew.bat when available on Windows 1`] = `
 Array [
   Object {
     "cmd": "gradlew.bat --init-script renovate-plugin.gradle renovate",
@@ -88,7 +88,7 @@ Array [
 ]
 `;
 
-exports[`manager/gradle extractPackageFile should return empty if renovate report is invalid 1`] = `
+exports[`manager/gradle/index extractPackageFile should return empty if renovate report is invalid 1`] = `
 Array [
   Object {
     "cmd": "./gradlew --init-script renovate-plugin.gradle renovate",
@@ -110,7 +110,7 @@ Array [
 ]
 `;
 
-exports[`manager/gradle extractPackageFile should return empty if there are no dependencies 1`] = `
+exports[`manager/gradle/index extractPackageFile should return empty if there are no dependencies 1`] = `
 Array [
   Object {
     "cmd": "./gradlew --init-script renovate-plugin.gradle renovate",
@@ -132,7 +132,7 @@ Array [
 ]
 `;
 
-exports[`manager/gradle extractPackageFile should return empty if there is no dependency report 1`] = `
+exports[`manager/gradle/index extractPackageFile should return empty if there is no dependency report 1`] = `
 Array [
   Object {
     "cmd": "./gradlew --init-script renovate-plugin.gradle renovate",
@@ -154,7 +154,7 @@ Array [
 ]
 `;
 
-exports[`manager/gradle extractPackageFile should return gradle dependencies 1`] = `
+exports[`manager/gradle/index extractPackageFile should return gradle dependencies 1`] = `
 Array [
   Object {
     "datasource": "maven",
@@ -275,7 +275,7 @@ Array [
 ]
 `;
 
-exports[`manager/gradle extractPackageFile should return gradle dependencies 2`] = `
+exports[`manager/gradle/index extractPackageFile should return gradle dependencies 2`] = `
 Array [
   Object {
     "cmd": "./gradlew --init-script renovate-plugin.gradle renovate",
@@ -297,7 +297,7 @@ Array [
 ]
 `;
 
-exports[`manager/gradle extractPackageFile should return gradle dependencies for build.gradle in subdirectories if there is gradlew in the same directory 1`] = `
+exports[`manager/gradle/index extractPackageFile should return gradle dependencies for build.gradle in subdirectories if there is gradlew in the same directory 1`] = `
 Array [
   Object {
     "datasource": "maven",
@@ -360,7 +360,7 @@ Array [
 ]
 `;
 
-exports[`manager/gradle extractPackageFile should return gradle dependencies for build.gradle in subdirectories if there is gradlew in the same directory 2`] = `
+exports[`manager/gradle/index extractPackageFile should return gradle dependencies for build.gradle in subdirectories if there is gradlew in the same directory 2`] = `
 Array [
   Object {
     "cmd": "./gradlew --init-script renovate-plugin.gradle renovate",
@@ -382,7 +382,7 @@ Array [
 ]
 `;
 
-exports[`manager/gradle extractPackageFile should return gradle.kts dependencies 1`] = `
+exports[`manager/gradle/index extractPackageFile should return gradle.kts dependencies 1`] = `
 Array [
   Object {
     "datasource": "maven",
@@ -503,7 +503,7 @@ Array [
 ]
 `;
 
-exports[`manager/gradle extractPackageFile should return gradle.kts dependencies 2`] = `
+exports[`manager/gradle/index extractPackageFile should return gradle.kts dependencies 2`] = `
 Array [
   Object {
     "cmd": "./gradlew --init-script renovate-plugin.gradle renovate",
@@ -525,9 +525,9 @@ Array [
 ]
 `;
 
-exports[`manager/gradle extractPackageFile should return null and gradle should not be executed if no root build.gradle 1`] = `Array []`;
+exports[`manager/gradle/index extractPackageFile should return null and gradle should not be executed if no root build.gradle 1`] = `Array []`;
 
-exports[`manager/gradle extractPackageFile should use docker even if gradlew is available 1`] = `
+exports[`manager/gradle/index extractPackageFile should use docker even if gradlew is available 1`] = `
 Array [
   Object {
     "cmd": "docker pull renovate/gradle",
@@ -567,7 +567,7 @@ Array [
 ]
 `;
 
-exports[`manager/gradle extractPackageFile should use docker even if gradlew.bat is available on Windows 1`] = `
+exports[`manager/gradle/index extractPackageFile should use docker even if gradlew.bat is available on Windows 1`] = `
 Array [
   Object {
     "cmd": "docker pull renovate/gradle",
@@ -607,7 +607,7 @@ Array [
 ]
 `;
 
-exports[`manager/gradle extractPackageFile should use docker if required 1`] = `
+exports[`manager/gradle/index extractPackageFile should use docker if required 1`] = `
 Array [
   Object {
     "cmd": "docker pull renovate/gradle",
@@ -647,7 +647,7 @@ Array [
 ]
 `;
 
-exports[`manager/gradle extractPackageFile should use repositories only for current project 1`] = `
+exports[`manager/gradle/index extractPackageFile should use repositories only for current project 1`] = `
 Array [
   Object {
     "datasource": "maven",
@@ -687,7 +687,7 @@ Array [
 ]
 `;
 
-exports[`manager/gradle extractPackageFile should use repositories only for current project 2`] = `
+exports[`manager/gradle/index extractPackageFile should use repositories only for current project 2`] = `
 Array [
   Object {
     "cmd": "./gradlew --init-script renovate-plugin.gradle renovate",
@@ -709,8 +709,8 @@ Array [
 ]
 `;
 
-exports[`manager/gradle updateDependency should update an existing module dependency 1`] = `Array []`;
+exports[`manager/gradle/index updateDependency should update an existing module dependency 1`] = `Array []`;
 
-exports[`manager/gradle updateDependency should update an existing plugin dependency 1`] = `Array []`;
+exports[`manager/gradle/index updateDependency should update an existing plugin dependency 1`] = `Array []`;
 
-exports[`manager/gradle updateDependency should update an existing plugin dependency with Kotlin DSL 1`] = `Array []`;
+exports[`manager/gradle/index updateDependency should update an existing plugin dependency with Kotlin DSL 1`] = `Array []`;
diff --git a/lib/manager/gradle/gradle-updates-report.spec.ts b/lib/manager/gradle/gradle-updates-report.spec.ts
index bbf503b89f34210a78869a1a9c28a746e106146c..b8577f3bc78867caf8ccb563660fc8eccc3358a5 100644
--- a/lib/manager/gradle/gradle-updates-report.spec.ts
+++ b/lib/manager/gradle/gradle-updates-report.spec.ts
@@ -1,6 +1,7 @@
 import * as path from 'path';
 import * as fs from 'fs-extra';
 import tmp, { DirectoryResult } from 'tmp-promise';
+import { getName } from '../../../test/util';
 import { exec } from '../../util/exec';
 import { ifSystemSupportsGradle } from './__testutil__/gradle';
 import {
@@ -11,20 +12,18 @@ import { GRADLE_DEPENDENCY_REPORT_OPTIONS } from './index';
 
 const fixtures = 'lib/manager/gradle/__fixtures__';
 
-describe('lib/manager/gradle/gradle-updates-report', () => {
-  let workingDir: DirectoryResult;
+describe(getName(__filename), () => {
+  for (const gradleVersion of [5, 6]) {
+    ifSystemSupportsGradle(gradleVersion).describe(
+      'createRenovateGradlePlugin',
+      () => {
+        let workingDir: DirectoryResult;
 
-  beforeEach(async () => {
-    workingDir = await tmp.dir({ unsafeCleanup: true });
-  });
+        beforeEach(async () => {
+          workingDir = await tmp.dir({ unsafeCleanup: true });
+        });
 
-  describe('createRenovateGradlePlugin', () => {
-    for (const gradleVersion of [5, 6]) {
-      ifSystemSupportsGradle(gradleVersion).it(
-        `generates a report for Gradle version ${gradleVersion}`,
-        // the function creation is correct and intended
-        // eslint-disable-next-line no-loop-func
-        async () => {
+        it(`generates a report for Gradle version ${gradleVersion}`, async () => {
           await fs.copy(`${fixtures}/minimal-project`, workingDir.path);
           await fs.copy(
             `${fixtures}/gradle-wrappers/${gradleVersion}`,
@@ -41,9 +40,8 @@ describe('lib/manager/gradle/gradle-updates-report', () => {
               `${workingDir.path}/${GRADLE_DEPENDENCY_REPORT_FILENAME}`
             )
           ).toMatchSnapshot();
-        },
-        120000
-      );
-    }
-  });
+        }, 120000);
+      }
+    );
+  }
 });
diff --git a/lib/manager/gradle/index.spec.ts b/lib/manager/gradle/index.spec.ts
index 8c6fef123ef09c017edede209bd6bed78c261464..53f13643de1d189b9e2cc078e194f68c36a5d192 100644
--- a/lib/manager/gradle/index.spec.ts
+++ b/lib/manager/gradle/index.spec.ts
@@ -1,11 +1,10 @@
-/* eslint-disable @typescript-eslint/no-floating-promises */
 import { exec as _exec } from 'child_process';
 import * as _os from 'os';
 import fs from 'fs-extra';
 import tmp, { DirectoryResult } from 'tmp-promise';
 import * as upath from 'upath';
 import { envMock, mockExecAll } from '../../../test/execUtil';
-import { replacingSerializer } from '../../../test/util';
+import { getName, replacingSerializer } from '../../../test/util';
 import * as _util from '../../util';
 import { BinarySource } from '../../util/exec/common';
 import * as _docker from '../../util/exec/docker';
@@ -61,7 +60,7 @@ async function setupMocks() {
   return [require('.'), exec, util, os];
 }
 
-describe('manager/gradle', () => {
+describe(getName(__filename), () => {
   describe('extractPackageFile', () => {
     let manager: typeof _manager;
     let exec: jest.Mock<typeof _exec>;
@@ -247,13 +246,14 @@ describe('manager/gradle', () => {
           `${config.localDir}/renovate-plugin.gradle`,
           fs.constants.F_OK
         )
-      ).resolves.toBe(undefined);
+      ).resolves.toBeUndefined();
       expect(execSnapshots).toMatchSnapshot();
     });
 
     it('should use docker if required', async () => {
       const configWithDocker = { binarySource: BinarySource.Docker, ...config };
-      util.setUtilConfig(configWithDocker);
+      jest.spyOn(docker, 'removeDanglingContainers').mockResolvedValueOnce();
+      await util.setUtilConfig(configWithDocker);
       await initializeWorkingDir(false, standardUpdatesReport());
       const execSnapshots = mockExecAll(exec, gradleOutput);
 
@@ -264,7 +264,8 @@ describe('manager/gradle', () => {
 
     it('should use docker even if gradlew is available', async () => {
       const configWithDocker = { binarySource: BinarySource.Docker, ...config };
-      util.setUtilConfig(configWithDocker);
+      jest.spyOn(docker, 'removeDanglingContainers').mockResolvedValueOnce();
+      await util.setUtilConfig(configWithDocker);
       await initializeWorkingDir(true, standardUpdatesReport());
 
       const execSnapshots = mockExecAll(exec, gradleOutput);
@@ -275,7 +276,8 @@ describe('manager/gradle', () => {
 
     it('should use docker even if gradlew.bat is available on Windows', async () => {
       const configWithDocker = { binarySource: BinarySource.Docker, ...config };
-      util.setUtilConfig(configWithDocker);
+      jest.spyOn(docker, 'removeDanglingContainers').mockResolvedValueOnce();
+      await util.setUtilConfig(configWithDocker);
       os.platform.mockReturnValue('win32');
       await initializeWorkingDir(true, standardUpdatesReport());
       const execSnapshots = mockExecAll(exec, gradleOutput);
@@ -386,7 +388,7 @@ describe('manager/gradle', () => {
     });
   });
 
-  describe('executeGradle integration', () => {
+  ifSystemSupportsGradle(6).describe('executeGradle integration', () => {
     const SUCCESS_FILE_NAME = 'success.indicator';
     let workingDir: DirectoryResult;
     let testRunConfig: ExtractConfig;
@@ -416,25 +418,17 @@ allprojects {
       successFile = `${workingDir.path}/${SUCCESS_FILE_NAME}`;
     });
 
-    ifSystemSupportsGradle(6).it(
-      'executes an executable gradle wrapper',
-      async () => {
-        const gradlew = await fs.stat(`${workingDir.path}/gradlew`);
-        await manager.executeGradle(testRunConfig, workingDir.path, gradlew);
-        await expect(fs.readFile(successFile, 'utf8')).resolves.toBe('success');
-      },
-      120000
-    );
-
-    ifSystemSupportsGradle(6).it(
-      'executes a not-executable gradle wrapper',
-      async () => {
-        await fs.chmod(`${workingDir.path}/gradlew`, '444');
-        const gradlew = await fs.stat(`${workingDir.path}/gradlew`);
-        await manager.executeGradle(testRunConfig, workingDir.path, gradlew);
-        await expect(fs.readFile(successFile, 'utf8')).resolves.toBe('success');
-      },
-      120000
-    );
+    it('executes an executable gradle wrapper', async () => {
+      const gradlew = await fs.stat(`${workingDir.path}/gradlew`);
+      await manager.executeGradle(testRunConfig, workingDir.path, gradlew);
+      await expect(fs.readFile(successFile, 'utf8')).resolves.toBe('success');
+    }, 120000);
+
+    it('executes a not-executable gradle wrapper', async () => {
+      await fs.chmod(`${workingDir.path}/gradlew`, '444');
+      const gradlew = await fs.stat(`${workingDir.path}/gradlew`);
+      await manager.executeGradle(testRunConfig, workingDir.path, gradlew);
+      await expect(fs.readFile(successFile, 'utf8')).resolves.toBe('success');
+    }, 120000);
   });
 });
diff --git a/lib/manager/helm-requirements/extract.spec.ts b/lib/manager/helm-requirements/extract.spec.ts
index b3a19601dc85ce77ed07dc5c31fe257113d287f5..893c4583f229134893879011fa279862db98e507 100644
--- a/lib/manager/helm-requirements/extract.spec.ts
+++ b/lib/manager/helm-requirements/extract.spec.ts
@@ -36,7 +36,7 @@ describe('lib/manager/helm-requirements/extract', () => {
       });
       expect(result).not.toBeNull();
       expect(result).toMatchSnapshot();
-      expect(result.deps.every((dep) => dep.skipReason));
+      expect(result.deps.every((dep) => dep.skipReason)).toEqual(true);
     });
     it('parses simple requirements.yaml correctly', async () => {
       fs.readLocalFile.mockResolvedValueOnce(`
@@ -101,7 +101,7 @@ describe('lib/manager/helm-requirements/extract', () => {
       });
       expect(result).not.toBeNull();
       expect(result).toMatchSnapshot();
-      expect(result.deps.every((dep) => dep.skipReason));
+      expect(result.deps.every((dep) => dep.skipReason)).toEqual(false);
     });
     it("doesn't fail if Chart.yaml is invalid", async () => {
       fs.readLocalFile.mockResolvedValueOnce(`
diff --git a/lib/manager/helmfile/extract.spec.ts b/lib/manager/helmfile/extract.spec.ts
index bd734902b09dda584073667a0b8e26578cb19767..e57d7bb80b162a76ab5370ad121614a805ecdb42 100644
--- a/lib/manager/helmfile/extract.spec.ts
+++ b/lib/manager/helmfile/extract.spec.ts
@@ -56,7 +56,7 @@ describe('lib/manager/helmfile/extract', () => {
       });
       expect(result).not.toBeNull();
       expect(result).toMatchSnapshot();
-      expect(result.deps.every((dep) => dep.skipReason));
+      expect(result.deps.every((dep) => dep.skipReason)).toBeTruthy();
     });
 
     it('skip templetized release with invalid characters', () => {
@@ -100,7 +100,7 @@ describe('lib/manager/helmfile/extract', () => {
       });
       expect(result).not.toBeNull();
       expect(result).toMatchSnapshot();
-      expect(result.deps.every((dep) => dep.skipReason));
+      expect(result.deps.every((dep) => dep.skipReason)).toBeTruthy();
     });
 
     it('skip chart with unknown repository', () => {
@@ -121,7 +121,7 @@ describe('lib/manager/helmfile/extract', () => {
       });
       expect(result).not.toBeNull();
       expect(result).toMatchSnapshot();
-      expect(result.deps.every((dep) => dep.skipReason));
+      expect(result.deps.every((dep) => dep.skipReason)).toBeTruthy();
     });
 
     it('skip chart with special character in the name', () => {
@@ -145,7 +145,7 @@ describe('lib/manager/helmfile/extract', () => {
       });
       expect(result).not.toBeNull();
       expect(result).toMatchSnapshot();
-      expect(result.deps.every((dep) => dep.skipReason));
+      expect(result.deps.every((dep) => dep.skipReason)).toBeTruthy();
     });
 
     it('skip chart that does not have specified version', () => {
@@ -165,7 +165,7 @@ describe('lib/manager/helmfile/extract', () => {
       });
       expect(result).not.toBeNull();
       expect(result).toMatchSnapshot();
-      expect(result.deps.every((dep) => dep.skipReason));
+      expect(result.deps.every((dep) => dep.skipReason)).toBeTruthy();
     });
   });
 });
diff --git a/lib/manager/homebrew/__snapshots__/extract.spec.ts.snap b/lib/manager/homebrew/__snapshots__/extract.spec.ts.snap
index a03810a202d5c509a2e985007ae18dc5e1ac1f26..6f4f252dc4d0b1d44c7cf68106ea481f7409f58b 100644
--- a/lib/manager/homebrew/__snapshots__/extract.spec.ts.snap
+++ b/lib/manager/homebrew/__snapshots__/extract.spec.ts.snap
@@ -73,43 +73,44 @@ Object {
 }
 `;
 
-exports[`lib/manager/homebrew/extract extractPackageFile() skips if invalid url field 1`] = `
+exports[`lib/manager/homebrew/extract extractPackageFile() skips if invalid url 1`] = `
 Object {
   "deps": Array [
     Object {
-      "currentValue": "v0.8.2.not_tar.not_gz",
-      "datasource": "github-tags",
-      "depName": "bazelbuild/bazel-watcher",
+      "currentValue": null,
+      "datasource": null,
+      "depName": "Ibazel",
       "managerData": Object {
-        "ownerName": "bazelbuild",
-        "repoName": "bazel-watcher",
+        "ownerName": null,
+        "repoName": null,
         "sha256": "26f5125218fad2741d3caf937b02296d803900e5f153f5b1f733f15391b9f9b4",
-        "url": "https://github.com/bazelbuild/bazel-watcher/archive/v0.8.2.not_tar.not_gz",
+        "url": "invalid_url",
       },
+      "skipReason": "unsupported-url",
     },
   ],
 }
 `;
 
-exports[`lib/manager/homebrew/extract extractPackageFile() skips if invalid url field 2`] = `
+exports[`lib/manager/homebrew/extract extractPackageFile() skips if invalid url extension 1`] = `
 Object {
   "deps": Array [
     Object {
-      "currentValue": "vInvalid.version.2",
+      "currentValue": "v0.8.2.not_tar.not_gz",
       "datasource": "github-tags",
       "depName": "bazelbuild/bazel-watcher",
       "managerData": Object {
         "ownerName": "bazelbuild",
         "repoName": "bazel-watcher",
         "sha256": "26f5125218fad2741d3caf937b02296d803900e5f153f5b1f733f15391b9f9b4",
-        "url": "https://github.com/bazelbuild/bazel-watcher/archive/vInvalid.version.2.tar.gz",
+        "url": "https://github.com/bazelbuild/bazel-watcher/archive/v0.8.2.not_tar.not_gz",
       },
     },
   ],
 }
 `;
 
-exports[`lib/manager/homebrew/extract extractPackageFile() skips if invalid url field 3`] = `
+exports[`lib/manager/homebrew/extract extractPackageFile() skips if invalid url protocol 1`] = `
 Object {
   "deps": Array [
     Object {
@@ -128,20 +129,19 @@ Object {
 }
 `;
 
-exports[`lib/manager/homebrew/extract extractPackageFile() skips if invalid url field 4`] = `
+exports[`lib/manager/homebrew/extract extractPackageFile() skips if invalid url version 1`] = `
 Object {
   "deps": Array [
     Object {
-      "currentValue": null,
-      "datasource": null,
-      "depName": "Ibazel",
+      "currentValue": "vInvalid.version.2",
+      "datasource": "github-tags",
+      "depName": "bazelbuild/bazel-watcher",
       "managerData": Object {
-        "ownerName": null,
-        "repoName": null,
+        "ownerName": "bazelbuild",
+        "repoName": "bazel-watcher",
         "sha256": "26f5125218fad2741d3caf937b02296d803900e5f153f5b1f733f15391b9f9b4",
-        "url": "invalid_url",
+        "url": "https://github.com/bazelbuild/bazel-watcher/archive/vInvalid.version.2.tar.gz",
       },
-      "skipReason": "unsupported-url",
     },
   ],
 }
@@ -204,7 +204,7 @@ Object {
 }
 `;
 
-exports[`lib/manager/homebrew/extract extractPackageFile() skips sourceforge dependency 1`] = `
+exports[`lib/manager/homebrew/extract extractPackageFile() skips sourceforge dependency 1 1`] = `
 Object {
   "deps": Array [
     Object {
@@ -223,7 +223,7 @@ Object {
 }
 `;
 
-exports[`lib/manager/homebrew/extract extractPackageFile() skips sourceforge dependency 2`] = `
+exports[`lib/manager/homebrew/extract extractPackageFile() skips sourceforge dependency 2 1`] = `
 Object {
   "deps": Array [
     Object {
diff --git a/lib/manager/homebrew/extract.spec.ts b/lib/manager/homebrew/extract.spec.ts
index 3f5032143400a12ffbb7ddd5a4b8186ac7a7ae3c..0bcbd3f5bfc07d32f32226c7352f59541547ab4c 100644
--- a/lib/manager/homebrew/extract.spec.ts
+++ b/lib/manager/homebrew/extract.spec.ts
@@ -21,13 +21,13 @@ const ibazel = fs.readFileSync(
 
 describe('lib/manager/homebrew/extract', () => {
   describe('extractPackageFile()', () => {
-    it('skips sourceforge dependency', () => {
+    it('skips sourceforge dependency 1', () => {
       const res = extractPackageFile(aalib);
       expect(res).not.toBeNull();
       expect(res.deps[0].skipReason).toBe('unsupported-url');
       expect(res).toMatchSnapshot();
     });
-    it('skips sourceforge dependency', () => {
+    it('skips sourceforge dependency 2', () => {
       const res = extractPackageFile(aap);
       expect(res).not.toBeNull();
       expect(res.deps[0].skipReason).toBe('unsupported-url');
@@ -64,7 +64,7 @@ describe('lib/manager/homebrew/extract', () => {
       expect(res.deps[0].skipReason).toBeUndefined();
       expect(res).toMatchSnapshot();
     });
-    it('returns null for invalid class header', () => {
+    it('returns null for invalid class header 1', () => {
       const content = `
           class Ibazel !?# Formula
           desc 'IBazel is a tool for building Bazel targets when source files change.'
@@ -75,7 +75,7 @@ describe('lib/manager/homebrew/extract', () => {
       `;
       expect(extractPackageFile(content)).toBeNull();
     });
-    it('returns null for invalid class header', () => {
+    it('returns null for invalid class header 2', () => {
       const content = `
           class Ibazel < NotFormula
           desc 'IBazel is a tool for building Bazel targets when source files change.'
@@ -100,7 +100,7 @@ describe('lib/manager/homebrew/extract', () => {
       expect(res.deps[0].skipReason).toBe('unsupported-url');
       expect(res).toMatchSnapshot();
     });
-    it('skips if invalid url field', () => {
+    it('skips if invalid url extension', () => {
       const content = `
           class Ibazel < Formula
           desc 'IBazel is a tool for building Bazel targets when source files change.'
@@ -112,7 +112,7 @@ describe('lib/manager/homebrew/extract', () => {
       const res = extractPackageFile(content);
       expect(res).toMatchSnapshot();
     });
-    it('skips if invalid url field', () => {
+    it('skips if invalid url version', () => {
       const content = `
           class Ibazel < Formula
           desc 'IBazel is a tool for building Bazel targets when source files change.'
@@ -124,7 +124,7 @@ describe('lib/manager/homebrew/extract', () => {
       const res = extractPackageFile(content);
       expect(res).toMatchSnapshot();
     });
-    it('skips if invalid url field', () => {
+    it('skips if invalid url protocol', () => {
       const content = `
           class Ibazel < Formula
           desc 'IBazel is a tool for building Bazel targets when source files change.'
@@ -136,7 +136,7 @@ describe('lib/manager/homebrew/extract', () => {
       const res = extractPackageFile(content);
       expect(res).toMatchSnapshot();
     });
-    it('skips if invalid url field', () => {
+    it('skips if invalid url', () => {
       const content = `
           class Ibazel < Formula
           desc 'IBazel is a tool for building Bazel targets when source files change.'
diff --git a/lib/manager/kustomize/extract.spec.ts b/lib/manager/kustomize/extract.spec.ts
index 3f83e2bea58b33445c54fc48aa650ea75f03fbcb..6323ea86ff8fbb0a3382622ff8fef0c528c4ff30 100644
--- a/lib/manager/kustomize/extract.spec.ts
+++ b/lib/manager/kustomize/extract.spec.ts
@@ -118,7 +118,7 @@ describe('manager/kustomize/extract', () => {
         name: null,
         newTag: null,
       });
-      expect(pkg).toEqual(null);
+      expect(pkg).toBeNull();
     });
     it('should correctly extract a default image', () => {
       const sample = {
diff --git a/lib/manager/maven/index.spec.ts b/lib/manager/maven/index.spec.ts
index 6d8f4d08ece4644abeced08a833eaf6f9e2e03c0..6fcaf469b88d844eee1ed6fb180ef74f0d2ef28a 100644
--- a/lib/manager/maven/index.spec.ts
+++ b/lib/manager/maven/index.spec.ts
@@ -224,7 +224,7 @@ describe('manager/maven', () => {
           : null;
       const oldContent = extractPackage(pomContent);
       const dep = select(oldContent);
-      expect(dep).not.toEqual(null);
+      expect(dep).not.toBeNull();
       const upgrade = { ...dep, newValue };
       expect(updateDependency({ fileContent: pomContent, upgrade })).toEqual(
         pomContent
diff --git a/lib/manager/npm/extract/__snapshots__/monorepo.spec.ts.snap b/lib/manager/npm/extract/__snapshots__/monorepo.spec.ts.snap
index 0da8b05c551d31764f284f5c0263e207964a6a8e..cb89f93e00a29cbea0f88b8b0c31d55c8c2a62a4 100644
--- a/lib/manager/npm/extract/__snapshots__/monorepo.spec.ts.snap
+++ b/lib/manager/npm/extract/__snapshots__/monorepo.spec.ts.snap
@@ -38,7 +38,7 @@ Array [
 ]
 `;
 
-exports[`manager/npm/extract .extractPackageFile() uses yarn workspaces package settings 1`] = `
+exports[`manager/npm/extract .extractPackageFile() uses yarn workspaces package settings with lerna 1`] = `
 Array [
   Object {
     "internalPackages": Array [
@@ -80,7 +80,7 @@ Array [
 ]
 `;
 
-exports[`manager/npm/extract .extractPackageFile() uses yarn workspaces package settings 2`] = `
+exports[`manager/npm/extract .extractPackageFile() uses yarn workspaces package settings without lerna 1`] = `
 Array [
   Object {
     "internalPackages": Array [
diff --git a/lib/manager/npm/extract/index.spec.ts b/lib/manager/npm/extract/index.spec.ts
index 7e52566c8de224eca4a4d7eb134a2181d6ee8b1c..23259b094f09be049cd6799dec14bfba2d79a9b7 100644
--- a/lib/manager/npm/extract/index.spec.ts
+++ b/lib/manager/npm/extract/index.spec.ts
@@ -311,7 +311,7 @@ describe('manager/npm/extract', () => {
   });
   describe('.postExtract()', () => {
     it('runs', async () => {
-      await npmExtract.postExtract([]);
+      await expect(npmExtract.postExtract([])).resolves.not.toThrow();
     });
   });
 });
diff --git a/lib/manager/npm/extract/monorepo.spec.ts b/lib/manager/npm/extract/monorepo.spec.ts
index d070a224874a96c17344e41442240c3ddf09e506..b99ca7f3c171adf1423dd86a549b89c933eb0de5 100644
--- a/lib/manager/npm/extract/monorepo.spec.ts
+++ b/lib/manager/npm/extract/monorepo.spec.ts
@@ -23,7 +23,7 @@ describe('manager/npm/extract', () => {
       expect(packageFiles[1].lernaDir).toEqual('.');
       expect((packageFiles[1] as any).internalPackages).toEqual(['@org/b']);
     });
-    it('uses yarn workspaces package settings', () => {
+    it('uses yarn workspaces package settings with lerna', () => {
       const packageFiles = [
         {
           packageFile: 'package.json',
@@ -46,7 +46,7 @@ describe('manager/npm/extract', () => {
       expect(packageFiles[1].lernaDir).toEqual('.');
       expect((packageFiles[1] as any).internalPackages).toEqual(['@org/b']);
     });
-    it('uses yarn workspaces package settings', () => {
+    it('uses yarn workspaces package settings without lerna', () => {
       const packageFiles = [
         {
           packageFile: 'package.json',
diff --git a/lib/manager/npm/update.spec.ts b/lib/manager/npm/update.spec.ts
index e1e58a80534a1a6a5c109a72529592c9a4b78a19..ab14bcb38a75663f80cb1084511f6a619a638ff2 100644
--- a/lib/manager/npm/update.spec.ts
+++ b/lib/manager/npm/update.spec.ts
@@ -103,7 +103,7 @@ describe('workers/branch/package-json', () => {
         upgrade,
       });
       expect(res).toMatchSnapshot();
-      expect(res.includes('v1.1.0')).toBe(true);
+      expect(res).toContain('v1.1.0');
     });
     it('updates resolutions too', () => {
       const upgrade = {
diff --git a/lib/manager/pip_setup/extract.spec.ts b/lib/manager/pip_setup/extract.spec.ts
index 115277fc3f982f207176ef083a4344173c7d5be2..97ababb696ecb27c530756dfb25801938a7aeaf4 100644
--- a/lib/manager/pip_setup/extract.spec.ts
+++ b/lib/manager/pip_setup/extract.spec.ts
@@ -37,31 +37,9 @@ describe('lib/manager/pip_setup/extract', () => {
         { stdout: 'Python 3.8.0\\n', stderr: '' },
       ]);
       const result = await getPythonAlias();
-      expect(pythonVersions.includes(result)).toBe(true);
+      expect(pythonVersions).toContain(result);
       expect(result).toMatchSnapshot();
       expect(execSnapshots).toMatchSnapshot();
     });
   });
-  // describe('Test for presence of mock lib', () => {
-  //   it('should test if python mock lib is installed', async () => {
-  //     const cp = jest.requireActual('../../util/exec');
-  //     let isMockInstalled = true;
-  //     // when binarysource === docker
-  //     try {
-  //       await cp.exec(`python -c "import mock"`);
-  //     } catch (err) {
-  //       isMockInstalled = false;
-  //     }
-  //     if (!isMockInstalled) {
-  //       try {
-  //         const pythonAlias = await getPythonAlias();
-  //         await exec(`${pythonAlias} -c "from unittest import mock"`);
-  //         isMockInstalled = true;
-  //       } catch (err) {
-  //         isMockInstalled = false;
-  //       }
-  //     }
-  //     expect(isMockInstalled).toBe(true);
-  //   });
-  // });
 });
diff --git a/lib/manager/pip_setup/index.spec.ts b/lib/manager/pip_setup/index.spec.ts
index d118df30e116d3cce027f708f015db05ef6a5b27..f3fdc84bc36786f3e15c607e3bab556cdc02c17c 100644
--- a/lib/manager/pip_setup/index.spec.ts
+++ b/lib/manager/pip_setup/index.spec.ts
@@ -102,31 +102,4 @@ describe('lib/manager/pip_setup/index', () => {
       expect(fixSnapshots(execSnapshots)).toMatchSnapshot();
     });
   });
-  /*
-  describe('extractSetupFile()', () => {
-    it('should return parsed setup() call', async () => {
-      expect(
-        await extractSetupFile(content, packageFile, config)
-      ).toMatchSnapshot();
-    });
-    it('should support setuptools', async () => {
-      expect(
-        await extractSetupFile(
-          'from setuptools import setup\nsetup(name="talisker")\n',
-          await tmpFile(),
-          config
-        )
-      ).toEqual({ name: 'talisker' });
-    });
-    it('should support distutils.core', async () => {
-      expect(
-        await extractSetupFile(
-          'from distutils.core import setup\nsetup(name="talisker")\n',
-          await tmpFile(),
-          config
-        )
-      ).toEqual({ name: 'talisker' });
-    });
-  });
-  */
 });
diff --git a/lib/manager/poetry/extract.spec.ts b/lib/manager/poetry/extract.spec.ts
index f4af91e1f54f0fc336e3523697b5d4cf8935ebaa..862c79c08b773aa416b5b8aac4a376f22ae174ea 100644
--- a/lib/manager/poetry/extract.spec.ts
+++ b/lib/manager/poetry/extract.spec.ts
@@ -111,7 +111,7 @@ describe('lib/manager/poetry/extract', () => {
       expect(res[0].skipReason).toBe('git-dependency');
       expect(res).toHaveLength(2);
     });
-    it('skips git dependencies', () => {
+    it('skips git dependencies with version', () => {
       const content =
         '[tool.poetry.dependencies]\r\nflask = {git = "https://github.com/pallets/flask.git", version="1.2.3"}\r\nwerkzeug = ">=0.14"';
       const res = extractPackageFile(content, filename).deps;
@@ -129,7 +129,7 @@ describe('lib/manager/poetry/extract', () => {
       expect(res[0].skipReason).toBe('path-dependency');
       expect(res).toHaveLength(2);
     });
-    it('skips path dependencies', () => {
+    it('skips path dependencies with version', () => {
       const content =
         '[tool.poetry.dependencies]\r\nflask = {path = "/some/path/", version = "1.2.3"}\r\nwerkzeug = ">=0.14"';
       const res = extractPackageFile(content, filename).deps;
diff --git a/lib/manager/pub/extract.spec.ts b/lib/manager/pub/extract.spec.ts
index 6cf25d2ab732b61937e4b54f5f6f8472fdaaf2da..160f0651a6ca50333bb0358a351fbdd80c7bd388 100644
--- a/lib/manager/pub/extract.spec.ts
+++ b/lib/manager/pub/extract.spec.ts
@@ -15,11 +15,11 @@ describe('manager/pub', () => {
   describe('extractPackageFile', () => {
     it('should return null if package does not contain any deps', () => {
       const res = extractPackageFile('foo: bar', 'pubspec.yaml');
-      expect(res).toEqual(null);
+      expect(res).toBeNull();
     });
     it('should return null if package is invalid', () => {
       const res = extractPackageFile(brokenYaml, 'pubspec.yaml');
-      expect(res).toEqual(null);
+      expect(res).toBeNull();
     });
     it('should return valid dependencies', () => {
       const res = extractPackageFile(packageFile, 'pubspec.yaml');
diff --git a/lib/platform/azure/__snapshots__/azure-helper.spec.ts.snap b/lib/platform/azure/__snapshots__/azure-helper.spec.ts.snap
index 26d0c17e4fd316433c66aa565a94d364dc4fac30..58edede50503a0a5a478ca32e2c8c20e52c26350 100644
--- a/lib/platform/azure/__snapshots__/azure-helper.spec.ts.snap
+++ b/lib/platform/azure/__snapshots__/azure-helper.spec.ts.snap
@@ -1,31 +1,13 @@
 // Jest Snapshot v1, https://goo.gl/fbAQLP
 
-exports[`platform/azure/helpers getStorageExtraCloneOpts should configure basic auth 1`] = `
-Object {
-  "--config": "http.extraheader=AUTHORIZATION: basic dXNlcjpwYXNz",
-}
-`;
-
-exports[`platform/azure/helpers getStorageExtraCloneOpts should configure personal access token 1`] = `
-Object {
-  "--config": "http.extraheader=AUTHORIZATION: basic OjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=",
-}
-`;
-
-exports[`platform/azure/helpers getStorageExtraCloneOpts should configure bearer token 1`] = `
-Object {
-  "--config": "http.extraheader=AUTHORIZATION: bearer token",
-}
-`;
-
-exports[`platform/azure/helpers getAzureBranchObj should be the branch object formated 1`] = `
+exports[`platform/azure/helpers getAzureBranchObj should get the branch object 1`] = `
 Object {
   "name": "refs/heads/branchName",
   "oldObjectId": "132",
 }
 `;
 
-exports[`platform/azure/helpers getAzureBranchObj should be the branch object formated 2`] = `
+exports[`platform/azure/helpers getAzureBranchObj should get the branch object when ref missing 1`] = `
 Object {
   "name": "refs/heads/branchName",
   "oldObjectId": "0000000000000000000000000000000000000000",
@@ -56,18 +38,18 @@ Object {
 }
 `;
 
-exports[`platform/azure/helpers getRef should get the ref 1`] = `
+exports[`platform/azure/helpers getRef should get the ref with full ref name 1`] = `
 Array [
   Object {
-    "objectId": 132,
+    "objectId": "132",
   },
 ]
 `;
 
-exports[`platform/azure/helpers getRef should get the ref 2`] = `
+exports[`platform/azure/helpers getRef should get the ref with short ref name 1`] = `
 Array [
   Object {
-    "objectId": "132",
+    "objectId": 132,
   },
 ]
 `;
@@ -129,4 +111,22 @@ Object {
 }
 `;
 
+exports[`platform/azure/helpers getStorageExtraCloneOpts should configure basic auth 1`] = `
+Object {
+  "--config": "http.extraheader=AUTHORIZATION: basic dXNlcjpwYXNz",
+}
+`;
+
+exports[`platform/azure/helpers getStorageExtraCloneOpts should configure bearer token 1`] = `
+Object {
+  "--config": "http.extraheader=AUTHORIZATION: bearer token",
+}
+`;
+
+exports[`platform/azure/helpers getStorageExtraCloneOpts should configure personal access token 1`] = `
+Object {
+  "--config": "http.extraheader=AUTHORIZATION: basic OjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=",
+}
+`;
+
 exports[`platform/azure/helpers max4000Chars should be the same 1`] = `"Hello"`;
diff --git a/lib/platform/azure/azure-helper.spec.ts b/lib/platform/azure/azure-helper.spec.ts
index eed3319f3fb19c0bd34ad6d45c0ef27b647f838a..0888fbb4ed4bff0c9c41d74bd87d1e74bed25907 100644
--- a/lib/platform/azure/azure-helper.spec.ts
+++ b/lib/platform/azure/azure-helper.spec.ts
@@ -64,7 +64,7 @@ describe('platform/azure/helpers', () => {
   });
 
   describe('getRef', () => {
-    it('should get the ref', async () => {
+    it('should get the ref with short ref name', async () => {
       azureApi.gitApi.mockImplementationOnce(
         () =>
           ({
@@ -74,7 +74,7 @@ describe('platform/azure/helpers', () => {
       const res = await azureHelper.getRefs('123', 'branch');
       expect(res).toMatchSnapshot();
     });
-    it('should get 0 ref', async () => {
+    it('should not get ref', async () => {
       azureApi.gitApi.mockImplementationOnce(
         () =>
           ({
@@ -82,9 +82,9 @@ describe('platform/azure/helpers', () => {
           } as any)
       );
       const res = await azureHelper.getRefs('123');
-      expect(res.length).toBe(0);
+      expect(res).toHaveLength(0);
     });
-    it('should get the ref', async () => {
+    it('should get the ref with full ref name', async () => {
       azureApi.gitApi.mockImplementationOnce(
         () =>
           ({
@@ -97,7 +97,7 @@ describe('platform/azure/helpers', () => {
   });
 
   describe('getAzureBranchObj', () => {
-    it('should be the branch object formated', async () => {
+    it('should get the branch object', async () => {
       azureApi.gitApi.mockImplementationOnce(
         () =>
           ({
@@ -111,7 +111,7 @@ describe('platform/azure/helpers', () => {
       );
       expect(res).toMatchSnapshot();
     });
-    it('should be the branch object formated', async () => {
+    it('should get the branch object when ref missing', async () => {
       azureApi.gitApi.mockImplementationOnce(
         () =>
           ({
@@ -244,7 +244,7 @@ describe('platform/azure/helpers', () => {
         str += 'a';
       }
       const res = azureHelper.max4000Chars(str);
-      expect(res.length).toBe(3999);
+      expect(res).toHaveLength(3999);
     });
   });
 
diff --git a/lib/platform/azure/index.spec.ts b/lib/platform/azure/index.spec.ts
index 6054ba78dbbed72ab7689e2020289467444163a5..075e162cb2dda328fe89d1f5098222c462eec98e 100644
--- a/lib/platform/azure/index.spec.ts
+++ b/lib/platform/azure/index.spec.ts
@@ -185,7 +185,7 @@ describe('platform/azure', () => {
 
   describe('cleanRepo()', () => {
     it('exists', async () => {
-      await azure.cleanRepo();
+      await expect(azure.cleanRepo()).resolves.not.toThrow();
     });
   });
 
diff --git a/lib/platform/bitbucket-server/index.spec.ts b/lib/platform/bitbucket-server/index.spec.ts
index 84063f96c22340362a77aeea7b91301621ed366d..acd4677d4d52ee3ac3b09ee10e81e122d73bbe8e 100644
--- a/lib/platform/bitbucket-server/index.spec.ts
+++ b/lib/platform/bitbucket-server/index.spec.ts
@@ -1,3 +1,5 @@
+// TODO fix mocks
+/* eslint jest/expect-expect: 1 */
 import {
   REPOSITORY_CHANGED,
   REPOSITORY_DISABLED,
diff --git a/lib/platform/bitbucket/index.spec.ts b/lib/platform/bitbucket/index.spec.ts
index 60af57c35d2d17f6b9d109d758118e7f63d55dc1..b4a85248ca2ef1742cf0a0bdb99eb88fb7dd1f13 100644
--- a/lib/platform/bitbucket/index.spec.ts
+++ b/lib/platform/bitbucket/index.spec.ts
@@ -1,3 +1,5 @@
+// TODO fix mocks
+/* eslint jest/expect-expect: 1 */
 import URL from 'url';
 import { REPOSITORY_DISABLED } from '../../constants/error-messages';
 import { logger as _logger } from '../../logger';
@@ -156,7 +158,8 @@ describe('platform/bitbucket', () => {
     it('sends to gitFs', async () => {
       await initRepo();
       await mocked(async () => {
-        await bitbucket.getFileList();
+        const fileList = await bitbucket.getFileList();
+        expect(fileList).not.toBeNull();
       });
     });
   });
@@ -166,7 +169,8 @@ describe('platform/bitbucket', () => {
       it('sends to gitFs', async () => {
         await initRepo();
         await mocked(async () => {
-          await bitbucket.branchExists('test');
+          const branchExists = await bitbucket.branchExists('test');
+          expect(branchExists).toEqual(true);
         });
       });
     });
@@ -526,15 +530,6 @@ describe('platform/bitbucket', () => {
     });
   });
 
-  describe('getBranchLastCommitTime()', () => {
-    it('sends to gitFs', async () => {
-      await initRepo();
-      await mocked(async () => {
-        await bitbucket.getBranchLastCommitTime('test');
-      });
-    });
-  });
-
   describe('getVulnerabilityAlerts()', () => {
     it('returns empty array', async () => {
       expect(await bitbucket.getVulnerabilityAlerts()).toEqual([]);
diff --git a/lib/platform/git/storage.spec.ts b/lib/platform/git/storage.spec.ts
index 432f5b15089f7b5064de73f993cadd7f4c3f5262..a9710ef49cf11a04ae5e2c2dc967352e1fb16e62 100644
--- a/lib/platform/git/storage.spec.ts
+++ b/lib/platform/git/storage.spec.ts
@@ -72,10 +72,10 @@ describe('platform/git/storage', () => {
 
   describe('setBaseBranch(branchName)', () => {
     it('sets the base branch as master', async () => {
-      await git.setBaseBranch('master');
+      await expect(git.setBaseBranch('master')).resolves.not.toThrow();
     });
     it('sets non-master base branch', async () => {
-      await git.setBaseBranch('develop');
+      await expect(git.setBaseBranch('develop')).resolves.not.toThrow();
     });
     it('should throw if branch does not exist', async () => {
       await expect(git.setBaseBranch('not_found')).rejects.toMatchSnapshot();
@@ -201,22 +201,24 @@ describe('platform/git/storage', () => {
         name: 'some-new-file',
         contents: 'some new-contents',
       };
-      await git.commitFiles({
+      const commit = await git.commitFiles({
         branchName: 'renovate/past_branch',
         files: [file],
         message: 'Create something',
       });
+      expect(commit).not.toBeNull();
     });
     it('deletes file', async () => {
       const file = {
         name: '|delete|',
         contents: 'file_to_delete',
       };
-      await git.commitFiles({
+      const commit = await git.commitFiles({
         branchName: 'renovate/something',
         files: [file],
         message: 'Delete something',
       });
+      expect(commit).not.toBeNull();
     });
     it('updates multiple files', async () => {
       const files = [
@@ -229,11 +231,12 @@ describe('platform/git/storage', () => {
           contents: 'other updated content',
         },
       ];
-      await git.commitFiles({
+      const commit = await git.commitFiles({
         branchName: 'renovate/something',
         files,
         message: 'Update something',
       });
+      expect(commit).not.toBeNull();
     });
     it('updates git submodules', async () => {
       const files = [
@@ -242,11 +245,12 @@ describe('platform/git/storage', () => {
           contents: 'some content',
         },
       ];
-      await git.commitFiles({
+      const commit = await git.commitFiles({
         branchName: 'renovate/something',
         files,
         message: 'Update something',
       });
+      expect(commit).not.toBeNull();
     });
     it('does not push when no diff', async () => {
       const branchName = 'renovate/something';
@@ -257,11 +261,12 @@ describe('platform/git/storage', () => {
         `refs/heads/${branchName}:refs/remotes/origin/${branchName}`,
       ]);
       const files = [];
-      await git.commitFiles({
+      const commit = await git.commitFiles({
         branchName,
         files,
         message: 'Update something',
       });
+      expect(commit).toBeNull();
     });
   });
 
diff --git a/lib/platform/gitea/index.spec.ts b/lib/platform/gitea/index.spec.ts
index b5e08d546983e6932dda89a895efec4e3e27c034..b69db5552e0e2d7fc29ab87d79aa0324350721f1 100644
--- a/lib/platform/gitea/index.spec.ts
+++ b/lib/platform/gitea/index.spec.ts
@@ -441,6 +441,22 @@ describe('platform/gitea', () => {
 
       expect(logger.warn).toHaveBeenCalledTimes(1);
     });
+
+    it('should set default base branch', async () => {
+      await initFakeRepo();
+      await gitea.setBaseBranch();
+
+      expect(gsmSetBaseBranch).toHaveBeenCalledTimes(1);
+      expect(gsmSetBaseBranch).toHaveBeenCalledWith(mockRepo.default_branch);
+    });
+
+    it('should set custom base branch', async () => {
+      await initFakeRepo();
+      await gitea.setBaseBranch('devel');
+
+      expect(gsmSetBaseBranch).toHaveBeenCalledTimes(1);
+      expect(gsmSetBaseBranch).toHaveBeenCalledWith('devel');
+    });
   });
 
   describe('getBranchStatus', () => {
@@ -560,24 +576,6 @@ describe('platform/gitea', () => {
     });
   });
 
-  describe('setBranchStatus', () => {
-    it('should set default base branch', async () => {
-      await initFakeRepo();
-      await gitea.setBaseBranch();
-
-      expect(gsmSetBaseBranch).toHaveBeenCalledTimes(1);
-      expect(gsmSetBaseBranch).toHaveBeenCalledWith(mockRepo.default_branch);
-    });
-
-    it('should set custom base branch', async () => {
-      await initFakeRepo();
-      await gitea.setBaseBranch('devel');
-
-      expect(gsmSetBaseBranch).toHaveBeenCalledTimes(1);
-      expect(gsmSetBaseBranch).toHaveBeenCalledWith('devel');
-    });
-  });
-
   describe('getPrList', () => {
     it('should return list of pull requests', async () => {
       helper.searchPRs.mockResolvedValueOnce(mockPRs);
@@ -1435,7 +1433,9 @@ index 0000000..2173594
   describe('addReviewers', () => {
     it('should do nothing - unsupported by platform', async () => {
       const mockPR = mockPRs[0];
-      await gitea.addReviewers(mockPR.number, ['me', 'you']);
+      await expect(
+        gitea.addReviewers(mockPR.number, ['me', 'you'])
+      ).resolves.not.toThrow();
     });
   });
 
diff --git a/lib/platform/github/__snapshots__/index.spec.ts.snap b/lib/platform/github/__snapshots__/index.spec.ts.snap
index 9fc7c8a76b8b90aa62fae721f5e5c955ad18744b..ed2b5c883451c0e502225ad58fe33f3faf77680c 100644
--- a/lib/platform/github/__snapshots__/index.spec.ts.snap
+++ b/lib/platform/github/__snapshots__/index.spec.ts.snap
@@ -2067,7 +2067,7 @@ Array [
 ]
 `;
 
-exports[`platform/github getBranchStatus() should fail if a check run has failed 2`] = `
+exports[`platform/github getBranchStatus() should fail if a check run is pending 1`] = `
 Array [
   Object {
     "headers": Object {
diff --git a/lib/platform/github/index.spec.ts b/lib/platform/github/index.spec.ts
index 9234301c2f811ed8f218089b973f4d852cc4e7db..759b0940c83979ce025182a4e00636af669e9ce1 100644
--- a/lib/platform/github/index.spec.ts
+++ b/lib/platform/github/index.spec.ts
@@ -659,7 +659,7 @@ describe('platform/github', () => {
       expect(res).toEqual(BranchStatus.green);
       expect(httpMock.getTrace()).toMatchSnapshot();
     });
-    it('should fail if a check run has failed', async () => {
+    it('should fail if a check run is pending', async () => {
       const scope = httpMock.scope(githubApiHost);
       initRepoMock(scope, 'some/repo');
       scope
@@ -1243,7 +1243,7 @@ describe('platform/github', () => {
         once: false,
         shouldReOpen: false,
       });
-      expect(res).toEqual(null);
+      expect(res).toBeNull();
       expect(httpMock.getTrace()).toMatchSnapshot();
     });
   });
diff --git a/lib/platform/gitlab/gl-got-wrapper.spec.ts b/lib/platform/gitlab/gl-got-wrapper.spec.ts
index 366277f3dbe5f2052f4514b5407c7f2e4ff0c85f..c55c422d5d7b9c0ab74a3f3955029f858067f927 100644
--- a/lib/platform/gitlab/gl-got-wrapper.spec.ts
+++ b/lib/platform/gitlab/gl-got-wrapper.spec.ts
@@ -62,6 +62,8 @@ describe('platform/gitlab/gl-got-wrapper', () => {
     expect(httpMock.getTrace()).toMatchSnapshot();
   });
   it('sets baseUrl', () => {
-    api.setBaseUrl('https://gitlab.renovatebot.com/api/v4/');
+    expect(() =>
+      api.setBaseUrl('https://gitlab.renovatebot.com/api/v4/')
+    ).not.toThrow();
   });
 });
diff --git a/lib/platform/gitlab/index.spec.ts b/lib/platform/gitlab/index.spec.ts
index b683dd964a0714716fd2206d875fb09548fd6298..b54eb619a1ecf22d758eefbd51e7a3125a2da635 100644
--- a/lib/platform/gitlab/index.spec.ts
+++ b/lib/platform/gitlab/index.spec.ts
@@ -1,3 +1,5 @@
+// TODO fix mocks
+/* eslint jest/expect-expect: 1 */
 import nock from 'nock';
 import { Platform, RepoParams } from '..';
 import * as httpMock from '../../../test/httpMock';
diff --git a/lib/platform/index.spec.ts b/lib/platform/index.spec.ts
index 73b1d54b8b5f671810f7c688fa337a000c4e52ef..5a1cd17fc14566098759369098c48c261b812b42 100644
--- a/lib/platform/index.spec.ts
+++ b/lib/platform/index.spec.ts
@@ -22,7 +22,7 @@ describe('platform', () => {
     function validate(module: Platform, name: string): boolean {
       // TODO: test required api
       if (!module.initPlatform) {
-        fail(`Missing api on ${name}`);
+        throw Error(`Missing api on ${name}`);
       }
       return true;
     }
diff --git a/lib/platform/utils/pr-body.spec.ts b/lib/platform/utils/pr-body.spec.ts
index eee4862d079ad483cbde9110bd66a5fa5f3b4a44..67558e516987e8903a49dd8ad321880d4a8d1d4d 100644
--- a/lib/platform/utils/pr-body.spec.ts
+++ b/lib/platform/utils/pr-body.spec.ts
@@ -19,7 +19,7 @@ describe('platform/utils/pr-body', () => {
     it('truncates to 300 not smart', () => {
       const body = smartTruncate(prBody, 300);
       expect(body).toMatchSnapshot();
-      expect(body.length).toEqual(300);
+      expect(body).toHaveLength(300);
     });
 
     it('truncates to 10', () => {
diff --git a/lib/util/cache/run.spec.ts b/lib/util/cache/run.spec.ts
index 68611a5612b0f5c169220acb546cf12d5c9192a4..d2602aaa719184afee0a06e58ebe09da6c8435b7 100644
--- a/lib/util/cache/run.spec.ts
+++ b/lib/util/cache/run.spec.ts
@@ -6,6 +6,6 @@ describe('getRepoCache', () => {
     expect(runCache.get('key')).toEqual('value');
   });
   it('clears repo cache', () => {
-    runCache.clear();
+    expect(() => runCache.clear()).not.toThrow();
   });
 });
diff --git a/lib/util/exec/exec.spec.ts b/lib/util/exec/exec.spec.ts
index b9cb45dd8c3b74df803c6b53812a6188cd63d252..84b43fd4ce7f60cf5ed496edc3bd19fc96f247aa 100644
--- a/lib/util/exec/exec.spec.ts
+++ b/lib/util/exec/exec.spec.ts
@@ -1,4 +1,3 @@
-/* eslint-disable @typescript-eslint/no-floating-promises */
 import {
   ExecOptions as ChildProcessExecOptions,
   exec as _cpExec,
@@ -405,8 +404,12 @@ describe(`Child process execution wrapper`, () => {
     if (trustLevel) {
       global.trustLevel = trustLevel;
     }
+
     if (config) {
-      setExecConfig(config);
+      jest
+        .spyOn(dockerModule, 'removeDanglingContainers')
+        .mockResolvedValueOnce();
+      await setExecConfig(config);
     }
 
     const actualCmd: string[] = [];
@@ -434,19 +437,19 @@ describe(`Child process execution wrapper`, () => {
       return undefined;
     });
 
-    setExecConfig({ binarySource: BinarySource.Global });
+    await setExecConfig({ binarySource: BinarySource.Global });
     await exec(inCmd, { docker });
     await exec(inCmd, { docker });
 
-    setExecConfig({ binarySource: BinarySource.Docker });
+    await setExecConfig({ binarySource: BinarySource.Docker });
     await exec(inCmd, { docker });
     await exec(inCmd, { docker });
 
-    setExecConfig({ binarySource: BinarySource.Global });
+    await setExecConfig({ binarySource: BinarySource.Global });
     await exec(inCmd, { docker });
     await exec(inCmd, { docker });
 
-    setExecConfig({ binarySource: BinarySource.Docker });
+    await setExecConfig({ binarySource: BinarySource.Docker });
     await exec(inCmd, { docker });
     await exec(inCmd, { docker });
 
@@ -469,7 +472,10 @@ describe(`Child process execution wrapper`, () => {
   });
 
   it('wraps error if removeDockerContainer throws an error', async () => {
-    setExecConfig({ binarySource: BinarySource.Docker });
+    cpExec.mockImplementationOnce((_execCmd, _execOpts, callback) =>
+      callback(null, { stdout: '', stderr: '' })
+    );
+    await setExecConfig({ binarySource: BinarySource.Docker });
     cpExec.mockImplementation(() => {
       throw new Error('some error occurred');
     });
diff --git a/lib/util/got/index.spec.ts b/lib/util/got/index.spec.ts
index a5f76e9a2f75716f101cf065207d4f71b899be7c..245976a2390aa7d067e57043dd8be8873d64c6f5 100644
--- a/lib/util/got/index.spec.ts
+++ b/lib/util/got/index.spec.ts
@@ -99,7 +99,7 @@ describe(getName(__filename), () => {
 
     runCache.clear();
 
-    await expect(got({ hostType: PLATFORM_TYPE_GITHUB })).rejects.toThrowError(
+    await expect(got({ hostType: PLATFORM_TYPE_GITHUB })).rejects.toThrow(
       'not-found'
     );
 
diff --git a/lib/util/http/github.spec.ts b/lib/util/http/github.spec.ts
index 3e9847d2520ff516f50ad036ca6df3ac79c0cd1b..3f519ce8546d96674738a135e795534185986f93 100644
--- a/lib/util/http/github.spec.ts
+++ b/lib/util/http/github.spec.ts
@@ -67,7 +67,7 @@ describe(getName(__filename), () => {
       });
       const [req] = httpMock.getTrace();
       expect(req).toBeDefined();
-      expect(req.url.includes('/v3')).toBe(false);
+      expect(req.url).not.toContain('/v3');
     });
     it('paginates', async () => {
       const url = '/some-url';
@@ -165,7 +165,7 @@ describe(getName(__filename), () => {
       expect(e).toBeDefined();
       expect(e.message).toEqual(PLATFORM_INTEGRATION_UNAUTHORIZED);
     });
-    it('should throw for unauthorized integration', () => {
+    it('should throw for unauthorized integration2', () => {
       const gotErr = {
         statusCode: 403,
         body: { message: 'Upgrade to GitHub Pro' },
@@ -363,7 +363,7 @@ describe(getName(__filename), () => {
 
       const items = await githubApi.getGraphqlNodes(query, 'testItem');
       expect(httpMock.getTrace()).toHaveLength(3);
-      expect(items.length).toEqual(3);
+      expect(items).toHaveLength(3);
     });
   });
 });
diff --git a/lib/util/package-rules.spec.ts b/lib/util/package-rules.spec.ts
index 88838d07ba5b95ab588e2e7a47f2164a0e1e05fc..1e002452f9cfe0a0770766dbf912db3a4ed47115 100644
--- a/lib/util/package-rules.spec.ts
+++ b/lib/util/package-rules.spec.ts
@@ -147,7 +147,7 @@ describe('applyPackageRules()', () => {
     });
     expect(res2.x).toBeDefined();
   });
-  it('filters depType', () => {
+  it('filters requested depType', () => {
     const config: TestConfig = {
       packageRules: [
         {
@@ -164,7 +164,7 @@ describe('applyPackageRules()', () => {
     const res = applyPackageRules({ ...config, ...dep });
     expect(res.x).toBe(1);
   });
-  it('filters depTypes', () => {
+  it('filters from list of requested depTypes', () => {
     const config: TestConfig = {
       packageRules: [
         {
@@ -418,7 +418,7 @@ describe('applyPackageRules()', () => {
     const res = applyPackageRules({ ...config, ...dep });
     expect(res.x).toBe(1);
   });
-  it('filters depType', () => {
+  it('filters out unrequested depType', () => {
     const config: TestConfig = {
       packageRules: [
         {
diff --git a/lib/util/sanitize.spec.ts b/lib/util/sanitize.spec.ts
index f774608b43b0161ac1d54b122a064711d04eb04f..341f2e285bc96a5ba5f304c589b4b4c21456e7b9 100644
--- a/lib/util/sanitize.spec.ts
+++ b/lib/util/sanitize.spec.ts
@@ -6,7 +6,7 @@ describe('util/sanitize', () => {
   });
 
   it('sanitizes empty string', () => {
-    expect(sanitize(null)).toEqual(null);
+    expect(sanitize(null)).toBeNull();
   });
   it('sanitizes secrets from strings', () => {
     const token = 'abc123token';
diff --git a/lib/versioning/cargo/index.spec.ts b/lib/versioning/cargo/index.spec.ts
index cc3f97701e9d69b37883808ba613be4aca58b4cd..494ae2ac54d669825143c75dd2ad2402becaeced 100644
--- a/lib/versioning/cargo/index.spec.ts
+++ b/lib/versioning/cargo/index.spec.ts
@@ -111,7 +111,7 @@ describe('semver.getNewValue()', () => {
         fromVersion: '1.0.0',
         toVersion: '1.1.0',
       })
-    ).toEqual(null);
+    ).toBeNull();
     expect(
       semver.getNewValue({
         currentValue: '*',
diff --git a/lib/versioning/docker/index.spec.ts b/lib/versioning/docker/index.spec.ts
index 06a9f96f43a5d1ed18f5d7cd4f0ff35cd779f743..a05882608734d14644fecda487a5fb6e57ddafef 100644
--- a/lib/versioning/docker/index.spec.ts
+++ b/lib/versioning/docker/index.spec.ts
@@ -67,15 +67,6 @@ describe('docker.', () => {
       expect(docker.equals('1.2', '1.2.3')).toBe(false);
     });
   });
-  describe('equals(version, other)', () => {
-    it('should support all versions length', () => {
-      expect(docker.equals('1.2.3', '1.2.3')).toBe(true);
-      expect(docker.equals('18.04', '18.4')).toBe(true);
-      expect(docker.equals('10.0', '10.0.4')).toBe(false);
-      expect(docker.equals('3', '4.0')).toBe(false);
-      expect(docker.equals('1.2', '1.2.3')).toBe(false);
-    });
-  });
   describe('maxSatisfyingVersion(versions, range)', () => {
     it('should support all versions length', () => {
       [docker.minSatisfyingVersion, docker.maxSatisfyingVersion].forEach(
diff --git a/lib/versioning/gradle/index.spec.ts b/lib/versioning/gradle/index.spec.ts
index 7c6aa5fd74a9892fa5430bc75a75890dc5939717..3a9b60b276ead03b87eac4ed5734ba8abe7756ce 100644
--- a/lib/versioning/gradle/index.spec.ts
+++ b/lib/versioning/gradle/index.spec.ts
@@ -214,7 +214,7 @@ describe('versioning/gradle', () => {
     expect(api.matches('1', '(,1)')).toBe(false);
     expect(api.matches('1', '[1,)')).toBe(true);
     expect(api.matches('1', '(1,)')).toBe(false);
-    expect(api.matches('1', '[[]]')).toBe(null);
+    expect(api.matches('1', '[[]]')).toBeNull();
     expect(api.matches('0', '')).toBe(false);
     expect(api.matches('1', '1')).toBe(true);
     expect(api.matches('1.2.3', '1.2.+')).toBe(true);
@@ -243,7 +243,7 @@ describe('versioning/gradle', () => {
         fromVersion: null,
         toVersion: '1.2.4',
       })
-    ).toBe(null);
+    ).toBeNull();
   });
   it('pins maven ranges', () => {
     const sample = [
diff --git a/lib/versioning/index.spec.ts b/lib/versioning/index.spec.ts
index de413fde62b12bd4ffc8399b2c197663b18da44e..a6f8e972a32b3216ddd558afac3afadca063456c 100644
--- a/lib/versioning/index.spec.ts
+++ b/lib/versioning/index.spec.ts
@@ -27,7 +27,7 @@ describe('allVersioning.get(versioning)', () => {
 
       // TODO: test required api
       if (!mod.isValid || !mod.isVersion) {
-        fail(`Missing api on ${name}`);
+        throw Error(`Missing api on ${name}`);
       }
 
       return true;
diff --git a/lib/versioning/versioning-metadata.spec.ts b/lib/versioning/versioning-metadata.spec.ts
index 49ea6b969bc55b683d910c150cfde8aef7c762d4..0d2aea55c49d8d6d59cbeda5ae69b659a6cf9738 100644
--- a/lib/versioning/versioning-metadata.spec.ts
+++ b/lib/versioning/versioning-metadata.spec.ts
@@ -16,7 +16,7 @@ describe('versioning metadata', () => {
         // ignore missing file
       }
       if (readme) {
-        expect(RegExp(/(^|\n)#+ /).exec(readme)).toBe(null);
+        expect(RegExp(/(^|\n)#+ /).exec(readme)).toBeNull();
       }
     }
   });
diff --git a/lib/workers/branch/index.spec.ts b/lib/workers/branch/index.spec.ts
index 8c73310cefbaadb8bcec67b5c4a778103eb330b7..5d967b747c76fc64161c68c9c99b1638242bd99a 100644
--- a/lib/workers/branch/index.spec.ts
+++ b/lib/workers/branch/index.spec.ts
@@ -117,6 +117,7 @@ describe('workers/branch', () => {
         isModified: false,
       } as never);
       await branchWorker.processBranch(config);
+      expect(reuse.shouldReuseExistingBranch).toHaveBeenCalled();
     });
     it('skips branch if closed major PR found', async () => {
       schedule.isScheduledNow.mockReturnValueOnce(false);
@@ -472,7 +473,8 @@ describe('workers/branch', () => {
       getUpdated.getUpdatedPackageFiles.mockImplementationOnce(() => {
         throw new Error('some error');
       });
-      await branchWorker.processBranch(config);
+      const processBranchResult = await branchWorker.processBranch(config);
+      expect(processBranchResult).not.toBeNull();
     });
     it('throws and swallows branch errors', async () => {
       getUpdated.getUpdatedPackageFiles.mockResolvedValueOnce({
@@ -482,7 +484,8 @@ describe('workers/branch', () => {
         artifactErrors: [{}],
         updatedArtifacts: [{}],
       } as never);
-      await branchWorker.processBranch(config);
+      const processBranchResult = await branchWorker.processBranch(config);
+      expect(processBranchResult).not.toBeNull();
     });
     it('swallows pr errors', async () => {
       getUpdated.getUpdatedPackageFiles.mockResolvedValueOnce({
@@ -497,7 +500,8 @@ describe('workers/branch', () => {
       prWorker.ensurePr.mockImplementationOnce(() => {
         throw new Error('some error');
       });
-      await branchWorker.processBranch(config);
+      const processBranchResult = await branchWorker.processBranch(config);
+      expect(processBranchResult).not.toBeNull();
     });
 
     it('closed pr (dry run)', async () => {
diff --git a/lib/workers/branch/lock-files/index.spec.ts b/lib/workers/branch/lock-files/index.spec.ts
index 79be0de9d306f11498ce3ee4ffb62cbea0105cda..992a6dbf75aa51b0bd1dd711c67391e3c1bc6f55 100644
--- a/lib/workers/branch/lock-files/index.spec.ts
+++ b/lib/workers/branch/lock-files/index.spec.ts
@@ -25,237 +25,9 @@ hostRules.find = jest.fn((_) => ({
   token: 'abc',
 }));
 
-const {
-  // determineLockFileDirs,
-  // writeExistingFiles,
-  writeUpdatedPackageFiles,
-  getAdditionalFiles,
-} = lockFiles;
+const { writeUpdatedPackageFiles, getAdditionalFiles } = lockFiles;
 
 describe('manager/npm/post-update', () => {
-  /*
-  describe('determineLockFileDirs', () => {
-    let config;
-    let packageFiles;
-    beforeEach(() => {
-      config = {
-        ...defaultConfig,
-      };
-      packageFiles = [
-        {
-          packageFile: 'package.json',
-          yarnLock: '# some yarn lock',
-        },
-        {
-          packageFile: 'backend/package.json',
-          packageLock: 'some package lock',
-        },
-        {
-          packageFile: 'frontend/package.json',
-          pnpmShrinkwrap: 'some package lock',
-        },
-        {
-          packageFile: 'leftend/package.json',
-          npmShrinkwrap: 'some package lock',
-        },
-      ];
-    });
-    it('returns all directories if lock file maintenance', () => {
-      config.upgrades = [{ updateType: 'lockFileMaintenance' }];
-      const res = determineLockFileDirs(config, packageFiles);
-      expect(res).toMatchSnapshot();
-    });
-    it('returns directories from updated package files', () => {
-      config.upgrades = [{}];
-      config.updatedPackageFiles = [
-        {
-          name: 'package.json',
-          contents: 'some contents',
-        },
-        {
-          name: 'backend/package.json',
-          contents: 'some contents',
-        },
-        {
-          name: 'frontend/package.json',
-          contents: 'some contents',
-        },
-        {
-          name: 'leftend/package.json',
-          contents: 'some contents',
-        },
-      ];
-      const res = determineLockFileDirs(config, packageFiles);
-      expect(res).toMatchSnapshot();
-    });
-    it('returns root directory if using yarn workspaces', () => {
-      config.workspaceDir = '.';
-      config.upgrades = [{}];
-      config.packageFiles = [
-        {
-          packageFile: 'package.json',
-          yarnLock: '# some yarn lock',
-        },
-        {
-          packageFile: 'backend/package.json',
-          workspaceDir: '.',
-        },
-      ];
-      config.updatedPackageFiles = [
-        {
-          name: 'backend/package.json',
-          contents: 'some contents',
-        },
-      ];
-      const res = determineLockFileDirs(config);
-      expect(res).toMatchSnapshot();
-      expect(res.npmLockDirs).toHaveLength(0);
-      expect(res.yarnLockDirs).toHaveLength(1);
-      expect(res.yarnLockDirs[0]).toEqual('.');
-    });
-    it('returns root directory if using lerna package lock', () => {
-      config.lernaClient = 'yarn';
-      config.upgrades = [{}];
-      config.packageFiles = [
-        {
-          packageFile: 'package.json',
-          yarnLock: '# some yarn lock',
-        },
-        {
-          packageFile: 'backend/package.json',
-          workspaceDir: '.',
-        },
-      ];
-      config.updatedPackageFiles = [
-        {
-          name: 'backend/package.json',
-          contents: 'some contents',
-        },
-      ];
-      const res = determineLockFileDirs(config);
-      expect(res).toMatchSnapshot();
-      expect(res.npmLockDirs).toHaveLength(0);
-      expect(res.yarnLockDirs).toHaveLength(0);
-      expect(res.lernaDirs).toHaveLength(1);
-      expect(res.lernaDirs[0]).toEqual('.');
-    });
-  });
-  describe('writeExistingFiles', () => {
-    let config;
-    beforeEach(() => {
-      config = {
-        ...defaultConfig,
-        localDir: 'some-tmp-dir',
-      };
-      fs.outputFile = jest.fn();
-      fs.remove = jest.fn();
-    });
-    it('returns if no packageFiles', async () => {
-      config.npmrc = 'some-npmrc';
-      config.yarnrc = 'some-yarnrc';
-      await writeExistingFiles(config, {});
-      expect(fs.outputFile.mock.calls).toHaveLength(2);
-    });
-    it('writes files and removes files', async () => {
-      config.npmrc = 'some-npmrc';
-      const packageFiles = {
-        npm: [
-          {
-            packageFile: 'package.json',
-            content: { name: 'package 1' },
-            npmrc: 'some npmrc',
-          },
-          {
-            packageFile: 'backend/package.json',
-            hasPackageLock: true,
-            content: { name: 'package-2', engines: { yarn: '^0.27.5' } },
-            yarnrc: 'some yarnrc',
-          },
-          {
-            packageFile: 'leftend/package.json',
-            hasNpmShrinkwrap: true,
-            content: { name: 'package-3' },
-          },
-        ],
-      };
-      await writeExistingFiles(config, packageFiles);
-      expect(fs.outputFile.mock.calls).toHaveLength(7);
-      expect(fs.remove.mock.calls).toHaveLength(9);
-    });
-    it('writes package.json of local lib', async () => {
-      const renoPath = upath.join(__dirname, '../../../');
-      config.localDir = renoPath;
-      const packageFiles = {
-        npm: [
-          {
-            packageFile: 'client/package.json',
-            content: {
-              name: 'package 1',
-              dependencies: {
-                test: 'file:../test.tgz',
-                testFolder: 'file:../test',
-              },
-            },
-            yarnLock: 'some yarn lock',
-            packageLock: 'some package lock',
-          },
-        ],
-      };
-      platform.getFile.mockReturnValue('some lock file contents');
-      await writeExistingFiles(config, packageFiles);
-      expect(fs.outputFile.mock.calls).toHaveLength(5);
-      expect(fs.remove.mock.calls).toHaveLength(1);
-    });
-    it('Try to write package.json of local lib, but file not found', async () => {
-      const renoPath = upath.join(__dirname, '../../../');
-      config.localDir = renoPath;
-      const packageFiles = {
-        npm: [
-          {
-            packageFile: 'client/package.json',
-            content: {
-              name: 'package 1',
-              dependencies: {
-                test: 'file:../test.tgz',
-                testFolder: 'file:../test',
-              },
-            },
-            yarnLock: 'some yarn lock',
-            packageLock: 'some package lock',
-          },
-        ],
-      };
-      platform.getFile.mockReturnValue(null);
-      await writeExistingFiles(config, packageFiles);
-      expect(fs.outputFile.mock.calls).toHaveLength(3);
-      expect(fs.remove.mock.calls).toHaveLength(1);
-    });
-    it('detect malicious intent (error config in package.json) local lib is not in the repo', async () => {
-      const renoPath = upath.join(__dirname, '../../../');
-      config.localDir = renoPath;
-      const packageFiles = {
-        npm: [
-          {
-            packageFile: 'client/package.json',
-            content: {
-              name: 'package 1',
-              dependencies: {
-                test: 'file:../test.tgz',
-                testFolder: 'file:../../../../test',
-              },
-            },
-            yarnLock: 'some yarn lock',
-            packageLock: 'some package lock',
-          },
-        ],
-      };
-      platform.getFile.mockReturnValue(null);
-      await writeExistingFiles(config, packageFiles);
-      expect(fs.outputFile.mock.calls).toHaveLength(3);
-      expect(fs.remove.mock.calls).toHaveLength(1);
-    });
-  });
-  */
   describe('writeUpdatedPackageFiles', () => {
     let config: PostUpdateConfig;
     beforeEach(() => {
@@ -295,7 +67,7 @@ describe('manager/npm/post-update', () => {
       config.upgrades = [];
       await writeUpdatedPackageFiles(config);
       expect(fs.outputFile).toHaveBeenCalledTimes(2);
-      expect(fs.outputFile.mock.calls[1][1].includes('"engines"')).toBe(false);
+      expect(fs.outputFile.mock.calls[1][1]).not.toContain('"engines"');
     });
   });
   describe('getAdditionalFiles', () => {
@@ -340,99 +112,5 @@ describe('manager/npm/post-update', () => {
       expect(res.artifactErrors).toHaveLength(0);
       expect(res.updatedArtifacts).toHaveLength(0);
     });
-    /*
-    it('returns no error and empty lockfiles if none updated', async () => {
-      lockFiles.determineLockFileDirs.mockReturnValueOnce({
-        npmLockDirs: [],
-        npmShrinkwrapDirs: [],
-        yarnLockDirs: [],
-        pnpmShrinkwrapDirs: [],
-        lernaDirs: [],
-      });
-      const res = await getAdditionalFiles(config);
-      expect(res).toMatchSnapshot();
-      expect(res.artifactErrors).toHaveLength(0);
-      expect(res.updatedArtifacts).toHaveLength(0);
-    });
-    it('tries multiple lock files', async () => {
-      lockFiles.determineLockFileDirs.mockReturnValueOnce({
-        npmLockDirs: ['a', 'b'],
-        npmShrinkwrapDirs: ['f'],
-        yarnLockDirs: ['c', 'd'],
-        pnpmShrinkwrapDirs: ['e'],
-        lernaDirs: [],
-      });
-      const res = await getAdditionalFiles(config);
-      expect(res).toMatchSnapshot();
-      expect(res.artifactErrors).toHaveLength(0);
-      expect(res.updatedArtifacts).toHaveLength(0);
-      expect(npm.generateLockFile.mock.calls).toHaveLength(3);
-      expect(yarn.generateLockFile.mock.calls).toHaveLength(2);
-      expect(platform.getFile.mock.calls).toHaveLength(7);
-    });
-    it('tries lerna npm', async () => {
-      lockFiles.determineLockFileDirs.mockReturnValueOnce({
-        npmLockDirs: ['a', 'b'],
-        npmShrinkwrapDirs: [],
-        yarnLockDirs: [],
-        pnpmShrinkwrapDirs: [],
-        lernaDirs: ['.'],
-      });
-      config.packageFiles = [];
-      config.lernaClient = 'npm';
-      lerna.generateLockFiles.mockReturnValueOnce({ error: false });
-      const res = await getAdditionalFiles(config);
-      expect(res).toMatchSnapshot();
-    });
-    it('tries lerna yarn', async () => {
-      lockFiles.determineLockFileDirs.mockReturnValueOnce({
-        npmLockDirs: [],
-        npmShrinkwrapDirs: [],
-        yarnLockDirs: ['c', 'd'],
-        pnpmShrinkwrapDirs: [],
-        lernaDirs: ['.'],
-      });
-      config.lernaClient = 'yarn';
-      lerna.generateLockFiles.mockReturnValueOnce({ error: true });
-      const res = await getAdditionalFiles(config);
-      expect(res).toMatchSnapshot();
-    });
-    it('sets error if receiving null', async () => {
-      lockFiles.determineLockFileDirs.mockReturnValueOnce({
-        npmLockDirs: ['a', 'b'],
-        npmShrinkwrapDirs: ['f'],
-        yarnLockDirs: ['c', 'd'],
-        pnpmShrinkwrapDirs: ['e'],
-        lernaDirs: [],
-      });
-      npm.generateLockFile.mockReturnValueOnce({ error: true });
-      yarn.generateLockFile.mockReturnValueOnce({ error: true });
-      pnpm.generateLockFile.mockReturnValueOnce({ error: true });
-      const res = await getAdditionalFiles(config);
-      expect(res.artifactErrors).toHaveLength(3);
-      expect(res.updatedArtifacts).toHaveLength(0);
-      expect(npm.generateLockFile.mock.calls).toHaveLength(3);
-      expect(yarn.generateLockFile.mock.calls).toHaveLength(2);
-      expect(platform.getFile.mock.calls).toHaveLength(4);
-    });
-    it('adds multiple lock files', async () => {
-      lockFiles.determineLockFileDirs.mockReturnValueOnce({
-        npmLockDirs: ['a', 'b'],
-        npmShrinkwrapDirs: ['f'],
-        yarnLockDirs: ['c', 'd'],
-        pnpmShrinkwrapDirs: ['e'],
-        lernaDirs: [],
-      });
-      npm.generateLockFile.mockReturnValueOnce('some new lock file contents');
-      yarn.generateLockFile.mockReturnValueOnce('some new lock file contents');
-      pnpm.generateLockFile.mockReturnValueOnce('some new lock file contents');
-      const res = await getAdditionalFiles(config);
-      expect(res.artifactErrors).toHaveLength(0);
-      expect(res.updatedArtifacts).toHaveLength(3);
-      expect(npm.generateLockFile.mock.calls).toHaveLength(3);
-      expect(yarn.generateLockFile.mock.calls).toHaveLength(2);
-      expect(platform.getFile.mock.calls).toHaveLength(7);
-    });
-    */
   });
 });
diff --git a/lib/workers/branch/lock-files/lerna.spec.ts b/lib/workers/branch/lock-files/lerna.spec.ts
index 09272c4fdc7c4cec443a3c392088ad5ad65c0025..4bd78fb95756f8f1ad35719461b1167dfa8bad42 100644
--- a/lib/workers/branch/lock-files/lerna.spec.ts
+++ b/lib/workers/branch/lock-files/lerna.spec.ts
@@ -71,21 +71,4 @@ describe('generateLockFiles()', () => {
     expect(res.error).toBe(false);
     expect(execSnapshots).toMatchSnapshot();
   });
-  // it('uses docker', async () => {
-  //   platform.getFile.mockResolvedValueOnce(
-  //     JSON.stringify({ dependencies: { lerna: '2.0.0' } })
-  //   );
-  //   const execSnapshots = mockExecAll(exec);
-  //   const skipInstalls = false;
-
-  //   const res = await lernaHelper.generateLockFiles(
-  //     'npm',
-  //     'some-dir',
-  //     { binarySource: BinarySource.Docker, cacheDir: 'some-cache-dir' },
-  //     {},
-  //     skipInstalls
-  //   );
-  //   expect(res.error).toBe(false);
-  //   expect(execSnapshots).toMatchSnapshot();
-  // });
 });
diff --git a/lib/workers/branch/schedule.spec.ts b/lib/workers/branch/schedule.spec.ts
index 1a7655a71edff7d8c0ceddc5af706bbd356841da..53679c566673389e2d8f43e679c13ace469c5a6e 100644
--- a/lib/workers/branch/schedule.spec.ts
+++ b/lib/workers/branch/schedule.spec.ts
@@ -177,12 +177,12 @@ describe('workers/branch/schedule', () => {
       const res = schedule.isScheduledNow(config);
       expect(res).toBe(true);
     });
-    it('supports every weekday', () => {
+    it('supports every weekend', () => {
       config.schedule = ['every weekend'];
       const res = schedule.isScheduledNow(config);
       expect(res).toBe(false);
     });
-    it('supports every weekday', () => {
+    it('supports every weekday with time', () => {
       config.schedule = ['before 11:00am every weekday'];
       const res = schedule.isScheduledNow(config);
       expect(res).toBe(true);
diff --git a/lib/workers/global/index.spec.ts b/lib/workers/global/index.spec.ts
index 2d791f9db9efe5e8642f8b0bc392cc88f4532128..f58c0a58fdcbfe5d37de0b792fadd67c01ecd393 100644
--- a/lib/workers/global/index.spec.ts
+++ b/lib/workers/global/index.spec.ts
@@ -29,7 +29,7 @@ describe('lib/workers/global', () => {
       maintainYarnLock: true,
       foo: 1,
     });
-    await globalWorker.start();
+    await expect(globalWorker.start()).resolves.toEqual(0);
   });
   it('handles zero repos', async () => {
     configParser.parseConfigs.mockResolvedValueOnce({
@@ -37,7 +37,7 @@ describe('lib/workers/global', () => {
       cacheDir: '/tmp/cache',
       repositories: [],
     });
-    await globalWorker.start();
+    await expect(globalWorker.start()).resolves.toEqual(0);
   });
   it('processes repositories', async () => {
     configParser.parseConfigs.mockResolvedValueOnce({
diff --git a/lib/workers/pr/index.spec.ts b/lib/workers/pr/index.spec.ts
index 84e267fbc5e2d1cf2f0526968ed93c7c9fdf9422..e831fd49c84d862df0d07bd136cf92758ef113db 100644
--- a/lib/workers/pr/index.spec.ts
+++ b/lib/workers/pr/index.spec.ts
@@ -249,9 +249,9 @@ describe('workers/pr', () => {
       expect(prResult).toEqual(PrResult.Created);
       expect(pr).toMatchObject({ displayNumber: 'New Pull Request' });
       expect(platform.createPr.mock.calls[0]).toMatchSnapshot();
-      expect(
-        platform.createPr.mock.calls[0][0].prBody.includes('this Pin PR')
-      ).toBe(true);
+      expect(platform.createPr.mock.calls[0][0].prBody).toContain(
+        'this Pin PR'
+      );
     });
     it('should return null if creating PR fails', async () => {
       platform.getBranchStatus.mockResolvedValueOnce(BranchStatus.green);
@@ -362,12 +362,12 @@ describe('workers/pr', () => {
       expect(pr).toMatchObject({ displayNumber: 'New Pull Request' });
       expect(platform.addAssignees).toHaveBeenCalledTimes(1);
       const assignees = platform.addAssignees.mock.calls[0][1];
-      expect(assignees.length).toEqual(2);
+      expect(assignees).toHaveLength(2);
       expect(config.assignees).toEqual(expect.arrayContaining(assignees));
 
       expect(platform.addReviewers).toHaveBeenCalledTimes(1);
       const reviewers = platform.addReviewers.mock.calls[0][1];
-      expect(reviewers.length).toEqual(2);
+      expect(reviewers).toHaveLength(2);
       expect(config.reviewers).toEqual(expect.arrayContaining(reviewers));
     });
     it('should add and deduplicate additionalReviewers on new PR', async () => {
diff --git a/lib/workers/repository/configured.spec.ts b/lib/workers/repository/configured.spec.ts
index 647a75d246473a914d37ec4e49ea6718c27360fe..521af441239e1f6b613d1fc9fd705baa83d66ba1 100644
--- a/lib/workers/repository/configured.spec.ts
+++ b/lib/workers/repository/configured.spec.ts
@@ -10,7 +10,7 @@ beforeEach(() => {
 describe('workers/repository/configured', () => {
   describe('checkIfConfigured()', () => {
     it('returns', () => {
-      checkIfConfigured(config);
+      expect(() => checkIfConfigured(config)).not.toThrow();
     });
     it('throws if disabled', () => {
       config.enabled = false;
diff --git a/lib/workers/repository/extract/index.spec.ts b/lib/workers/repository/extract/index.spec.ts
index 37087657b69f1f667927a10789d0145e46fd3c8e..90e5952d9a748a03a83b40577c314ef2df699dde 100644
--- a/lib/workers/repository/extract/index.spec.ts
+++ b/lib/workers/repository/extract/index.spec.ts
@@ -19,7 +19,7 @@ describe('workers/repository/extract/index', () => {
     it('runs', async () => {
       managerFiles.getManagerPackageFiles.mockResolvedValue([{} as never]);
       const res = await extractAllDependencies(config);
-      expect(Object.keys(res).includes('ansible')).toBe(true);
+      expect(Object.keys(res)).toContain('ansible');
     });
     it('skips non-enabled managers', async () => {
       config.enabledManagers = ['npm'];
@@ -31,7 +31,7 @@ describe('workers/repository/extract/index', () => {
       managerFiles.getManagerPackageFiles.mockResolvedValue([{} as never]);
       config.regexManagers = [{ fileMatch: ['README'], matchStrings: [''] }];
       const res = await extractAllDependencies(config);
-      expect(Object.keys(res).includes('regex')).toBe(true);
+      expect(Object.keys(res)).toContain('regex');
     });
   });
 });
diff --git a/lib/workers/repository/finalise/prune.spec.ts b/lib/workers/repository/finalise/prune.spec.ts
index e073d9094b13496ea6fa6da425c91b7676f77fe8..c67a4288ef4652228a677ed9b5173e81c009609b 100644
--- a/lib/workers/repository/finalise/prune.spec.ts
+++ b/lib/workers/repository/finalise/prune.spec.ts
@@ -21,7 +21,9 @@ describe('workers/repository/finalise/prune', () => {
     it('returns if no renovate branches', async () => {
       config.branchList = [];
       platform.getAllRenovateBranches.mockResolvedValueOnce([]);
-      await cleanup.pruneStaleBranches(config, config.branchList);
+      await expect(
+        cleanup.pruneStaleBranches(config, config.branchList)
+      ).resolves.not.toThrow();
     });
     it('returns if no remaining branches', async () => {
       config.branchList = ['renovate/a', 'renovate/b'];
diff --git a/lib/workers/repository/finalise/validate.spec.ts b/lib/workers/repository/finalise/validate.spec.ts
index 3de16a18dab5f521911a7acb93e25bdc7ca503fd..406f36648cd89b9fc5e0ecc5022794d74b8387a6 100644
--- a/lib/workers/repository/finalise/validate.spec.ts
+++ b/lib/workers/repository/finalise/validate.spec.ts
@@ -10,7 +10,9 @@ beforeEach(() => {
 describe('workers/repository/validate', () => {
   describe('validatePrs()', () => {
     it('returns if disabled', async () => {
-      await validate.validatePrs({ suppressNotifications: ['prValidation'] });
+      await expect(
+        validate.validatePrs({ suppressNotifications: ['prValidation'] })
+      ).resolves.not.toThrow();
     });
     it('catches error', async () => {
       platform.getPrList.mockResolvedValueOnce([
diff --git a/lib/workers/repository/init/__snapshots__/index.spec.ts.snap b/lib/workers/repository/init/__snapshots__/index.spec.ts.snap
new file mode 100644
index 0000000000000000000000000000000000000000..639a7839bf67401330462667ca8bcc001a41dba5
--- /dev/null
+++ b/lib/workers/repository/init/__snapshots__/index.spec.ts.snap
@@ -0,0 +1,3 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`workers/repository/init initRepo runs 1`] = `Object {}`;
diff --git a/lib/workers/repository/init/apis.spec.ts b/lib/workers/repository/init/apis.spec.ts
index e3a510890b8c796506ac59c542ae8dc60bc81b01..e20917a7bde961e03cbed6deb35b3315961c7e2e 100644
--- a/lib/workers/repository/init/apis.spec.ts
+++ b/lib/workers/repository/init/apis.spec.ts
@@ -13,7 +13,8 @@ describe('workers/repository/init/apis', () => {
       config.token = 'some-token';
     });
     it('runs', async () => {
-      await initApis(config);
+      const workerPlatformConfig = await initApis(config);
+      expect(workerPlatformConfig).toBeTruthy();
     });
   });
 });
diff --git a/lib/workers/repository/init/config.spec.ts b/lib/workers/repository/init/config.spec.ts
index 524380e758114f6d248ad2a5f68f08faab8aa533..38a3c5e8809cb0240704e383c0861e2ef5a7b4ab 100644
--- a/lib/workers/repository/init/config.spec.ts
+++ b/lib/workers/repository/init/config.spec.ts
@@ -45,7 +45,8 @@ describe('workers/repository/init/config', () => {
         },
       });
       fs.readLocalFile.mockResolvedValue(pJson);
-      await mergeRenovateConfig(config);
+      const renovateConfig = await mergeRenovateConfig(config);
+      expect(renovateConfig).toBeTruthy();
     });
     it('returns error if cannot parse', async () => {
       platform.getFileList.mockResolvedValue(['package.json', 'renovate.json']);
@@ -85,7 +86,8 @@ describe('workers/repository/init/config', () => {
       fs.readLocalFile.mockResolvedValue(`{
         // this is json5 format
       }`);
-      await mergeRenovateConfig(config);
+      const renovateConfig = await mergeRenovateConfig(config);
+      expect(renovateConfig).toBeTruthy();
     });
     it('finds .github/renovate.json', async () => {
       platform.getFileList.mockResolvedValue([
@@ -93,7 +95,8 @@ describe('workers/repository/init/config', () => {
         '.github/renovate.json',
       ]);
       fs.readLocalFile.mockResolvedValue('{}');
-      await mergeRenovateConfig(config);
+      const renovateConfig = await mergeRenovateConfig(config);
+      expect(renovateConfig).toBeTruthy();
     });
     it('finds .gitlab/renovate.json', async () => {
       platform.getFileList.mockResolvedValue([
@@ -101,7 +104,8 @@ describe('workers/repository/init/config', () => {
         '.gitlab/renovate.json',
       ]);
       fs.readLocalFile.mockResolvedValue('{}');
-      await mergeRenovateConfig(config);
+      const renovateConfig = await mergeRenovateConfig(config);
+      expect(renovateConfig).toBeTruthy();
     });
     it('finds .renovaterc.json', async () => {
       platform.getFileList.mockResolvedValue([
@@ -109,7 +113,8 @@ describe('workers/repository/init/config', () => {
         '.renovaterc.json',
       ]);
       fs.readLocalFile.mockResolvedValue('{}');
-      await mergeRenovateConfig(config);
+      const renovateConfig = await mergeRenovateConfig(config);
+      expect(renovateConfig).toBeTruthy();
     });
     it('throws error if misconfigured', async () => {
       platform.getFileList.mockResolvedValue([
diff --git a/lib/workers/repository/init/index.spec.ts b/lib/workers/repository/init/index.spec.ts
index 204803170bed8123684ec3bde876c0edfb61cced..ced701204e20847212ffbe4b8aa2908cc9509523 100644
--- a/lib/workers/repository/init/index.spec.ts
+++ b/lib/workers/repository/init/index.spec.ts
@@ -21,7 +21,8 @@ describe('workers/repository/init', () => {
       base.checkBaseBranch.mockResolvedValue({});
       apis.initApis.mockResolvedValue({} as never);
       config.mergeRenovateConfig.mockResolvedValueOnce({});
-      await initRepo({});
+      const renovateConfig = await initRepo({});
+      expect(renovateConfig).toMatchSnapshot();
     });
   });
 });
diff --git a/lib/workers/repository/onboarding/pr/index.spec.ts b/lib/workers/repository/onboarding/pr/index.spec.ts
index d0e87c264cc875a914c8cc37306dd4b795283e56..fe6ced66dec7cbee5b0ee7958709c2814497b8d7 100644
--- a/lib/workers/repository/onboarding/pr/index.spec.ts
+++ b/lib/workers/repository/onboarding/pr/index.spec.ts
@@ -30,7 +30,9 @@ describe('workers/repository/onboarding/pr', () => {
     let createPrBody: string;
     it('returns if onboarded', async () => {
       config.repoIsOnboarded = true;
-      await ensureOnboardingPr(config, packageFiles, branches);
+      await expect(
+        ensureOnboardingPr(config, packageFiles, branches)
+      ).resolves.not.toThrow();
     });
     it('creates PR', async () => {
       await ensureOnboardingPr(config, packageFiles, branches);
@@ -49,7 +51,7 @@ describe('workers/repository/onboarding/pr', () => {
       expect(platform.createPr).toHaveBeenCalledTimes(0);
       expect(platform.updatePr).toHaveBeenCalledTimes(0);
     });
-    it('updates PR', async () => {
+    it('updates PR when conflicted', async () => {
       config.baseBranch = 'some-branch';
       platform.getBranchPr.mockResolvedValueOnce(
         partial<Pr>({
@@ -63,7 +65,7 @@ describe('workers/repository/onboarding/pr', () => {
       expect(platform.createPr).toHaveBeenCalledTimes(0);
       expect(platform.updatePr).toHaveBeenCalledTimes(1);
     });
-    it('updates PR', async () => {
+    it('updates PR when modified', async () => {
       config.baseBranch = 'some-branch';
       platform.getBranchPr.mockResolvedValueOnce(
         partial<Pr>({
diff --git a/lib/workers/repository/process/__snapshots__/extract-update.spec.ts.snap b/lib/workers/repository/process/__snapshots__/extract-update.spec.ts.snap
new file mode 100644
index 0000000000000000000000000000000000000000..20f00a8ca662d9c9ae99cfc8a35b6e6a547c6c9d
--- /dev/null
+++ b/lib/workers/repository/process/__snapshots__/extract-update.spec.ts.snap
@@ -0,0 +1,16 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`workers/repository/process/extract-update extract() runs 1`] = `
+Object {
+  "branchList": Array [
+    "branchName",
+  ],
+  "branches": Array [
+    Object {
+      "branchName": "some-branch",
+      "upgrades": Array [],
+    },
+  ],
+  "packageFiles": undefined,
+}
+`;
diff --git a/lib/workers/repository/process/deprecated.spec.ts b/lib/workers/repository/process/deprecated.spec.ts
index 7d9c79a28f3e21284a065387cce9208c0f0425aa..367163040d9e2f86615a23d686c72d442b24190d 100644
--- a/lib/workers/repository/process/deprecated.spec.ts
+++ b/lib/workers/repository/process/deprecated.spec.ts
@@ -5,14 +5,14 @@ describe('workers/repository/process/deprecated', () => {
   describe('raiseDeprecationWarnings()', () => {
     it('returns if onboarding', async () => {
       const config = {};
-      await raiseDeprecationWarnings(config, {});
+      await expect(raiseDeprecationWarnings(config, {})).resolves.not.toThrow();
     });
     it('returns if disabled', async () => {
       const config: RenovateConfig = {
         repoIsOnboarded: true,
         suppressNotifications: ['deprecationWarningIssues'],
       };
-      await raiseDeprecationWarnings(config, {});
+      await expect(raiseDeprecationWarnings(config, {})).resolves.not.toThrow();
     });
     it('raises deprecation warnings', async () => {
       const config: RenovateConfig = {
diff --git a/lib/workers/repository/process/extract-update.spec.ts b/lib/workers/repository/process/extract-update.spec.ts
index a090e48360a153b35b4cd6f2ea59dd066d909ac4..d599e9ef24cc7393f58b3d703d551dfe55c7ae65 100644
--- a/lib/workers/repository/process/extract-update.spec.ts
+++ b/lib/workers/repository/process/extract-update.spec.ts
@@ -23,7 +23,8 @@ describe('workers/repository/process/extract-update', () => {
         suppressNotifications: ['deprecationWarningIssues'],
       };
       const res = await extract(config);
-      await update(config, res.branches);
+      expect(res).toMatchSnapshot();
+      await expect(update(config, res.branches)).resolves.not.toThrow();
     });
   });
 });
diff --git a/lib/workers/repository/process/index.ts b/lib/workers/repository/process/index.ts
index 5bdfcc85cd9d1b4e766c37425bdc2cdda09c15f7..a9175e69e7920baeae763316cf170f522c5780cd 100644
--- a/lib/workers/repository/process/index.ts
+++ b/lib/workers/repository/process/index.ts
@@ -70,7 +70,7 @@ export async function extractDependencies(
   return res;
 }
 
-export async function updateRepo(
+export function updateRepo(
   config: RenovateConfig,
   branches: BranchConfig[],
   branchList: string[]
diff --git a/lib/workers/repository/result.spec.ts b/lib/workers/repository/result.spec.ts
index 2b237806e6207313da1e10d29a0b795135ed8e92..1966de1cef4d49d13b72de317551aca70476c437 100644
--- a/lib/workers/repository/result.spec.ts
+++ b/lib/workers/repository/result.spec.ts
@@ -10,7 +10,8 @@ beforeEach(() => {
 describe('workers/repository/result', () => {
   describe('processResult()', () => {
     it('runs', () => {
-      processResult(config, 'done');
+      const result = processResult(config, 'done');
+      expect(result).not.toBeNil();
     });
   });
 });
diff --git a/lib/workers/repository/updates/generate.spec.ts b/lib/workers/repository/updates/generate.spec.ts
index fad0842c56f41cc29b522632f11654db7ddb19be..da2a1e94281aaba623f58ab2d4b0ffa5dd082b85 100644
--- a/lib/workers/repository/updates/generate.spec.ts
+++ b/lib/workers/repository/updates/generate.spec.ts
@@ -291,7 +291,7 @@ describe('workers/repository/updates/generate', () => {
         'chore(): update dependency some-dep to v1.2.0'
       );
     });
-    it('scopes monorepo commits with nested package files', () => {
+    it('scopes monorepo commits with nested package files using parent directory', () => {
       const branch = [
         partial<BranchUpgradeConfig>({
           ...defaultConfig,
@@ -317,7 +317,7 @@ describe('workers/repository/updates/generate', () => {
         'chore(bar): update dependency some-dep to v1.2.0'
       );
     });
-    it('scopes monorepo commits with nested package files', () => {
+    it('scopes monorepo commits with nested package files using base directory', () => {
       const branch = [
         partial<BranchUpgradeConfig>({
           ...defaultConfig,
@@ -355,7 +355,7 @@ describe('workers/repository/updates/generate', () => {
       ];
       const res = generateBranchConfig(branch);
       expect(res.commitMessage).toMatchSnapshot();
-      expect(res.commitMessage.includes('\n')).toBe(true);
+      expect(res.commitMessage).toContain('\n');
     });
     it('supports manual prTitle', () => {
       const branch = [
diff --git a/package.json b/package.json
index 88344e7071dc6da838656d8903e89f94940ab9f0..a7bfbb800962fa34a2009553d3b25fc66f5b6674 100644
--- a/package.json
+++ b/package.json
@@ -233,12 +233,14 @@
     "eslint-config-airbnb-typescript": "6.3.2",
     "eslint-config-prettier": "6.11.0",
     "eslint-plugin-import": "2.20.2",
+    "eslint-plugin-jest": "23.8.2",
     "eslint-plugin-promise": "4.2.1",
     "glob": "7.1.6",
     "graphql": "15.0.0",
     "husky": "4.2.5",
     "jest": "26.0.1",
     "jest-circus": "26.0.1",
+    "jest-extended": "0.11.5",
     "jest-junit": "10.0.0",
     "jest-mock-extended": "1.0.8",
     "jest-silent-reporter": "0.2.1",
diff --git a/test/globals.ts b/test/globals.ts
index 5cd8209937ded38a6ae92b733b937ff780201eaf..2d4663996b01ceba2e73f1c72e232b416263ef98 100644
--- a/test/globals.ts
+++ b/test/globals.ts
@@ -2,6 +2,7 @@ import { tmpdir } from 'os';
 import nock from 'nock';
 import { join } from 'upath';
 import { init } from '../lib/util/cache/global/file';
+import 'jest-extended';
 
 jest.mock('../lib/platform', () => ({
   platform: jest.genMockFromModule('../lib/platform/github'),
diff --git a/yarn.lock b/yarn.lock
index a20f00924a3a60bafc92d042b367a7fbfedc280f..5440fbf65b942f0c41dfbfbc45f151f006b5c046 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -97,16 +97,16 @@
     levenary "^1.1.1"
     semver "^5.5.0"
 
-"@babel/helper-create-class-features-plugin@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.3.tgz#5b94be88c255f140fd2c10dd151e7f98f4bff397"
-  integrity sha512-qmp4pD7zeTxsv0JNecSBsEmG1ei2MqwJq4YQcK3ZWm/0t07QstWfvuV/vm3Qt5xNMFETn2SZqpMx2MQzbtq+KA==
+"@babel/helper-create-class-features-plugin@^7.8.3", "@babel/helper-create-class-features-plugin@^7.9.6":
+  version "7.9.6"
+  resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.9.6.tgz#965c8b0a9f051801fd9d3b372ca0ccf200a90897"
+  integrity sha512-6N9IeuyHvMBRyjNYOMJHrhwtu4WJMrYf8hVbEHD3pbbbmNOk1kmXSQs7bA4dYDUaIx4ZEzdnvo6NwC3WHd/Qow==
   dependencies:
-    "@babel/helper-function-name" "^7.8.3"
+    "@babel/helper-function-name" "^7.9.5"
     "@babel/helper-member-expression-to-functions" "^7.8.3"
     "@babel/helper-optimise-call-expression" "^7.8.3"
     "@babel/helper-plugin-utils" "^7.8.3"
-    "@babel/helper-replace-supers" "^7.8.3"
+    "@babel/helper-replace-supers" "^7.9.6"
     "@babel/helper-split-export-declaration" "^7.8.3"
 
 "@babel/helper-create-regexp-features-plugin@^7.8.3", "@babel/helper-create-regexp-features-plugin@^7.8.8":
@@ -215,15 +215,15 @@
     "@babel/traverse" "^7.8.3"
     "@babel/types" "^7.8.3"
 
-"@babel/helper-replace-supers@^7.8.3", "@babel/helper-replace-supers@^7.8.6":
-  version "7.8.6"
-  resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz#5ada744fd5ad73203bf1d67459a27dcba67effc8"
-  integrity sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==
+"@babel/helper-replace-supers@^7.8.3", "@babel/helper-replace-supers@^7.8.6", "@babel/helper-replace-supers@^7.9.6":
+  version "7.9.6"
+  resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.9.6.tgz#03149d7e6a5586ab6764996cd31d6981a17e1444"
+  integrity sha512-qX+chbxkbArLyCImk3bWV+jB5gTNU/rsze+JlcF6Nf8tVTigPJSI1o1oBow/9Resa1yehUO9lIipsmu9oG4RzA==
   dependencies:
     "@babel/helper-member-expression-to-functions" "^7.8.3"
     "@babel/helper-optimise-call-expression" "^7.8.3"
-    "@babel/traverse" "^7.8.6"
-    "@babel/types" "^7.8.6"
+    "@babel/traverse" "^7.9.6"
+    "@babel/types" "^7.9.6"
 
 "@babel/helper-simple-access@^7.8.3":
   version "7.8.3"
@@ -240,7 +240,7 @@
   dependencies:
     "@babel/types" "^7.8.3"
 
-"@babel/helper-validator-identifier@^7.9.5":
+"@babel/helper-validator-identifier@^7.9.0", "@babel/helper-validator-identifier@^7.9.5":
   version "7.9.5"
   resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80"
   integrity sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==
@@ -265,12 +265,12 @@
     "@babel/types" "^7.9.6"
 
 "@babel/highlight@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797"
-  integrity sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==
+  version "7.9.0"
+  resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079"
+  integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==
   dependencies:
+    "@babel/helper-validator-identifier" "^7.9.0"
     chalk "^2.0.0"
-    esutils "^2.0.2"
     js-tokens "^4.0.0"
 
 "@babel/node@7.8.7":
@@ -287,7 +287,7 @@
     resolve "^1.13.1"
     v8flags "^3.1.1"
 
-"@babel/parser@^7.1.0", "@babel/parser@^7.7.5", "@babel/parser@^7.8.6", "@babel/parser@^7.9.6":
+"@babel/parser@^7.1.0", "@babel/parser@^7.8.6", "@babel/parser@^7.9.6":
   version "7.9.6"
   resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.6.tgz#3b1bbb30dabe600cd72db58720998376ff653bc7"
   integrity sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==
@@ -702,11 +702,11 @@
     "@babel/helper-plugin-utils" "^7.8.3"
 
 "@babel/plugin-transform-typescript@^7.9.0":
-  version "7.9.0"
-  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.9.0.tgz#8b52649c81cb7dee117f760952ab46675a258836"
-  integrity sha512-GRffJyCu16H3tEhbt9Q4buVFFBqrgS8FzTuhqSxlXNgmqD8aw2xmwtRwrvWXXlw7gHs664uqacsJymHJ9SUE/Q==
+  version "7.9.6"
+  resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.9.6.tgz#2248971416a506fc78278fc0c0ea3179224af1e9"
+  integrity sha512-8OvsRdvpt3Iesf2qsAn+YdlwAJD7zJ+vhFZmDCa4b8dTp7MmHtKk5FF2mCsGxjZwuwsy/yIIay/nLmxST1ctVQ==
   dependencies:
-    "@babel/helper-create-class-features-plugin" "^7.8.3"
+    "@babel/helper-create-class-features-plugin" "^7.9.6"
     "@babel/helper-plugin-utils" "^7.8.3"
     "@babel/plugin-syntax-typescript" "^7.8.3"
 
@@ -804,9 +804,9 @@
     "@babel/plugin-transform-typescript" "^7.9.0"
 
 "@babel/register@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.8.3.tgz#5d5d30cfcc918437535d724b8ac1e4a60c5db1f8"
-  integrity sha512-t7UqebaWwo9nXWClIPLPloa5pN33A2leVs8Hf0e9g9YwUP8/H9NeR7DJU+4CXo23QtjChQv5a3DjEtT83ih1rg==
+  version "7.9.0"
+  resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.9.0.tgz#02464ede57548bddbb5e9f705d263b7c3f43d48b"
+  integrity sha512-Tv8Zyi2J2VRR8g7pC5gTeIN8Ihultbmk0ocyNz8H2nEZbmhp1N6q0A1UGsQbDvGP/sNinQKUHf3SqXwqjtFv4Q==
   dependencies:
     find-cache-dir "^2.0.0"
     lodash "^4.17.13"
@@ -814,14 +814,14 @@
     pirates "^4.0.0"
     source-map-support "^0.5.16"
 
-"@babel/runtime@^7.6.3", "@babel/runtime@^7.8.4":
-  version "7.8.7"
-  resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.7.tgz#8fefce9802db54881ba59f90bb28719b4996324d"
-  integrity sha512-+AATMUFppJDw6aiR5NVPHqIQBlV/Pj8wY/EZH+lmvRdUo9xBaz/rF3alAwFJQavvKfeOlPE7oaaDHVbcySbCsg==
+"@babel/runtime@^7.8.4":
+  version "7.9.6"
+  resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.6.tgz#a9102eb5cadedf3f31d08a9ecf294af7827ea29f"
+  integrity sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ==
   dependencies:
     regenerator-runtime "^0.13.4"
 
-"@babel/template@^7.3.3", "@babel/template@^7.7.4", "@babel/template@^7.8.3", "@babel/template@^7.8.6":
+"@babel/template@^7.3.3", "@babel/template@^7.8.3", "@babel/template@^7.8.6":
   version "7.8.6"
   resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b"
   integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==
@@ -830,7 +830,7 @@
     "@babel/parser" "^7.8.6"
     "@babel/types" "^7.8.6"
 
-"@babel/traverse@^7.1.0", "@babel/traverse@^7.7.4", "@babel/traverse@^7.8.3", "@babel/traverse@^7.8.6", "@babel/traverse@^7.9.6":
+"@babel/traverse@^7.1.0", "@babel/traverse@^7.8.3", "@babel/traverse@^7.9.6":
   version "7.9.6"
   resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.6.tgz#5540d7577697bf619cc57b92aa0f1c231a94f442"
   integrity sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg==
@@ -860,13 +860,22 @@
   integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
 
 "@cnakazawa/watch@^1.0.3":
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.3.tgz#099139eaec7ebf07a27c1786a3ff64f39464d2ef"
-  integrity sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a"
+  integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==
   dependencies:
     exec-sh "^0.3.2"
     minimist "^1.2.0"
 
+"@iarna/cli@^1.2.0":
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/@iarna/cli/-/cli-1.2.0.tgz#0f7af5e851afe895104583c4ca07377a8094d641"
+  integrity sha512-ukITQAqVs2n9HGmn3car/Ir7d3ta650iXhrG7pjr3EWdFmJuuOVWgYsu7ftsSe5VifEFFhjxVuX9+8F7L8hwcA==
+  dependencies:
+    signal-exit "^3.0.2"
+    update-notifier "^2.2.0"
+    yargs "^8.0.2"
+
 "@istanbuljs/load-nyc-config@^1.0.0":
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz#10602de5570baea82f8afbfa2630b24e7a8cfe5b"
@@ -882,6 +891,15 @@
   resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd"
   integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==
 
+"@jest/console@^24.9.0":
+  version "24.9.0"
+  resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0"
+  integrity sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==
+  dependencies:
+    "@jest/source-map" "^24.9.0"
+    chalk "^2.0.1"
+    slash "^2.0.0"
+
 "@jest/console@^26.0.1":
   version "26.0.1"
   resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.0.1.tgz#62b3b2fa8990f3cbffbef695c42ae9ddbc8f4b39"
@@ -987,6 +1005,15 @@
   optionalDependencies:
     node-notifier "^7.0.0"
 
+"@jest/source-map@^24.9.0":
+  version "24.9.0"
+  resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714"
+  integrity sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==
+  dependencies:
+    callsites "^3.0.0"
+    graceful-fs "^4.1.15"
+    source-map "^0.6.0"
+
 "@jest/source-map@^26.0.0":
   version "26.0.0"
   resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.0.0.tgz#fd7706484a7d3faf7792ae29783933bbf48a4749"
@@ -1006,6 +1033,15 @@
     "@types/istanbul-lib-coverage" "^2.0.0"
     collect-v8-coverage "^1.0.0"
 
+"@jest/test-result@^24.9.0":
+  version "24.9.0"
+  resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-24.9.0.tgz#11796e8aa9dbf88ea025757b3152595ad06ba0ca"
+  integrity sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==
+  dependencies:
+    "@jest/console" "^24.9.0"
+    "@jest/types" "^24.9.0"
+    "@types/istanbul-lib-coverage" "^2.0.0"
+
 "@jest/test-sequencer@^26.0.1":
   version "26.0.1"
   resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.0.1.tgz#b0563424728f3fe9e75d1442b9ae4c11da73f090"
@@ -1038,6 +1074,15 @@
     source-map "^0.6.1"
     write-file-atomic "^3.0.0"
 
+"@jest/types@^24.9.0":
+  version "24.9.0"
+  resolved "https://registry.yarnpkg.com/@jest/types/-/types-24.9.0.tgz#63cb26cb7500d069e5a389441a7c6ab5e909fc59"
+  integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==
+  dependencies:
+    "@types/istanbul-lib-coverage" "^2.0.0"
+    "@types/istanbul-reports" "^1.1.1"
+    "@types/yargs" "^13.0.0"
+
 "@jest/types@^25.5.0":
   version "25.5.0"
   resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d"
@@ -1086,54 +1131,54 @@
   dependencies:
     "@octokit/types" "^2.0.0"
 
-"@octokit/core@^2.4.0":
-  version "2.4.2"
-  resolved "https://registry.yarnpkg.com/@octokit/core/-/core-2.4.2.tgz#c22e583afc97e74015ea5bfd3ffb3ffc56c186ed"
-  integrity sha512-fUx/Qt774cgiPhb3HRKfdl6iufVL/ltECkwkCg373I4lIPYvAPY4cbidVZqyVqHI+ThAIlFlTW8FT4QHChv3Sg==
+"@octokit/core@^2.4.3":
+  version "2.5.0"
+  resolved "https://registry.yarnpkg.com/@octokit/core/-/core-2.5.0.tgz#4706258893a7ac6ab35d58d2fb9f2d2ba19a41a5"
+  integrity sha512-uvzmkemQrBgD8xuGbjhxzJN1darJk9L2cS+M99cHrDG2jlSVpxNJVhoV86cXdYBqdHCc9Z995uLCczaaHIYA6Q==
   dependencies:
     "@octokit/auth-token" "^2.4.0"
     "@octokit/graphql" "^4.3.1"
-    "@octokit/request" "^5.3.1"
+    "@octokit/request" "^5.4.0"
     "@octokit/types" "^2.0.0"
     before-after-hook "^2.1.0"
     universal-user-agent "^5.0.0"
 
-"@octokit/endpoint@^6.0.0":
-  version "6.0.0"
-  resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.0.tgz#4c7acd79ab72df78732a7d63b09be53ec5a2230b"
-  integrity sha512-3nx+MEYoZeD0uJ+7F/gvELLvQJzLXhep2Az0bBSXagbApDvDW0LWwpnAIY/hb0Jwe17A0fJdz0O12dPh05cj7A==
+"@octokit/endpoint@^6.0.1":
+  version "6.0.1"
+  resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.1.tgz#16d5c0e7a83e3a644d1ddbe8cded6c3d038d31d7"
+  integrity sha512-pOPHaSz57SFT/m3R5P8MUu4wLPszokn5pXcB/pzavLTQf2jbU+6iayTvzaY6/BiotuRS0qyEUkx3QglT4U958A==
   dependencies:
-    "@octokit/types" "^2.0.0"
+    "@octokit/types" "^2.11.1"
     is-plain-object "^3.0.0"
     universal-user-agent "^5.0.0"
 
 "@octokit/graphql@^4.3.1":
-  version "4.3.1"
-  resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.3.1.tgz#9ee840e04ed2906c7d6763807632de84cdecf418"
-  integrity sha512-hCdTjfvrK+ilU2keAdqNBWOk+gm1kai1ZcdjRfB30oA3/T6n53UVJb7w0L5cR3/rhU91xT3HSqCd+qbvH06yxA==
+  version "4.4.0"
+  resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.4.0.tgz#4540b48bbf796b837b311ba6ea5104760db530ca"
+  integrity sha512-Du3hAaSROQ8EatmYoSAJjzAz3t79t9Opj/WY1zUgxVUGfIKn0AEjg+hlOLscF6fv6i/4y/CeUvsWgIfwMkTccw==
   dependencies:
     "@octokit/request" "^5.3.0"
     "@octokit/types" "^2.0.0"
-    universal-user-agent "^4.0.0"
+    universal-user-agent "^5.0.0"
 
-"@octokit/plugin-paginate-rest@^2.0.0":
-  version "2.0.2"
-  resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.0.2.tgz#fee7a81a4cc7d03784aaf9225499dd6e27f6d01e"
-  integrity sha512-HzODcSUt9mjErly26TlTOGZrhf9bmF/FEDQ2zln1izhgmIV6ulsjsHmgmR4VZ0wzVr/m52Eb6U2XuyS8fkcR1A==
+"@octokit/plugin-paginate-rest@^2.2.0":
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.2.0.tgz#9ae0c14c1b90ec0d96d2ef1b44706b4505a91cee"
+  integrity sha512-KoNxC3PLNar8UJwR+1VMQOw2IoOrrFdo5YOiDKnBhpVbKpw+zkBKNMNKwM44UWL25Vkn0Sl3nYIEGKY+gW5ebw==
   dependencies:
-    "@octokit/types" "^2.0.1"
+    "@octokit/types" "^2.12.1"
 
 "@octokit/plugin-request-log@^1.0.0":
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.0.tgz#eef87a431300f6148c39a7f75f8cfeb218b2547e"
   integrity sha512-ywoxP68aOT3zHCLgWZgwUJatiENeHE7xJzYjfz8WI0goynp96wETBF+d95b8g/uL4QmS6owPVlaxiz3wyMAzcw==
 
-"@octokit/plugin-rest-endpoint-methods@^3.0.0":
-  version "3.2.0"
-  resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-3.2.0.tgz#ecc4bc594a57ebfb418b8c4a8c0f200455759004"
-  integrity sha512-k+RLsegQn4s0wvAFYuk3R18FVKRg3ktvzIGW6MkmrSiSXBwYfaEsv4CuPysyef0DL+74DRj/X9MLJYlbleUO+Q==
+"@octokit/plugin-rest-endpoint-methods@^3.11.1":
+  version "3.12.0"
+  resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-3.12.0.tgz#313938ece4267e98687179cdbc32bc09e06f2379"
+  integrity sha512-cpUTZR0V2B8lz351oKLXx01BxBF3sMOhvm0glEMIS9XWSpkHCeQDPLPh8TQmepY8e+AhhgWxuWdn1PLDPQlTpw==
   dependencies:
-    "@octokit/types" "^2.0.1"
+    "@octokit/types" "^4.0.0"
     deprecation "^2.3.1"
 
 "@octokit/request-error@^2.0.0":
@@ -1145,14 +1190,14 @@
     deprecation "^2.0.0"
     once "^1.4.0"
 
-"@octokit/request@^5.3.0", "@octokit/request@^5.3.1":
-  version "5.3.4"
-  resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.3.4.tgz#fbc950bf785d59da3b0399fc6d042c8cf52e2905"
-  integrity sha512-qyj8G8BxQyXjt9Xu6NvfvOr1E0l35lsXtwm3SopsYg/JWXjlsnwqLc8rsD2OLguEL/JjLfBvrXr4az7z8Lch2A==
+"@octokit/request@^5.3.0", "@octokit/request@^5.4.0":
+  version "5.4.2"
+  resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.4.2.tgz#74f8e5bbd39dc738a1b127629791f8ad1b3193ee"
+  integrity sha512-zKdnGuQ2TQ2vFk9VU8awFT4+EYf92Z/v3OlzRaSh4RIP0H6cvW1BFPXq4XYvNez+TPQjqN+0uSkCYnMFFhcFrw==
   dependencies:
-    "@octokit/endpoint" "^6.0.0"
+    "@octokit/endpoint" "^6.0.1"
     "@octokit/request-error" "^2.0.0"
-    "@octokit/types" "^2.0.0"
+    "@octokit/types" "^2.11.1"
     deprecation "^2.0.0"
     is-plain-object "^3.0.0"
     node-fetch "^2.3.0"
@@ -1160,19 +1205,26 @@
     universal-user-agent "^5.0.0"
 
 "@octokit/rest@^17.0.0":
-  version "17.0.0"
-  resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-17.0.0.tgz#1f44d96005f5946665fd42a85cd3e428172f01dc"
-  integrity sha512-nSlmyy1DBEOsC4voRbk/SN56V/iuZfxZzjFFz+ocb2MAYwHC+z1TyVOMV9W630dVn9ukioJO34VD5NSYwcgFWg==
+  version "17.9.1"
+  resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-17.9.1.tgz#ffa31614b2a2330fac82dcff8bb5e88c63fa7cbb"
+  integrity sha512-TCTqCMNs21ToN5rIx15sIETuR19WsAy9wI4GnSVY8yZxeOKzeQs8uvIeijy8Gb6DbcYGXDf+xJ1MNDePPss0DA==
   dependencies:
-    "@octokit/core" "^2.4.0"
-    "@octokit/plugin-paginate-rest" "^2.0.0"
+    "@octokit/core" "^2.4.3"
+    "@octokit/plugin-paginate-rest" "^2.2.0"
     "@octokit/plugin-request-log" "^1.0.0"
-    "@octokit/plugin-rest-endpoint-methods" "^3.0.0"
+    "@octokit/plugin-rest-endpoint-methods" "^3.11.1"
 
-"@octokit/types@^2.0.0", "@octokit/types@^2.0.1":
-  version "2.3.1"
-  resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.3.1.tgz#40cd61c125a6161cfb3bfabc75805ac7a54213b4"
-  integrity sha512-rvJP1Y9A/+Cky2C3var1vsw3Lf5Rjn/0sojNl2AjCX+WbpIHYccaJ46abrZoIxMYnOToul6S9tPytUVkFI7CXQ==
+"@octokit/types@^2.0.0", "@octokit/types@^2.11.1", "@octokit/types@^2.12.1":
+  version "2.16.2"
+  resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.16.2.tgz#4c5f8da3c6fecf3da1811aef678fda03edac35d2"
+  integrity sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==
+  dependencies:
+    "@types/node" ">= 8"
+
+"@octokit/types@^4.0.0":
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/@octokit/types/-/types-4.0.0.tgz#57425d275d33b02922e8822eabf57466ef243969"
+  integrity sha512-wbjL8HhCLdBOAmvPJPkMqF4bf6AWzsas78I7+slJt5LAjuAL+kTlWtXHr2V9VnOuEFItZdzfgFTpMjSBkFeVZg==
   dependencies:
     "@types/node" ">= 8"
 
@@ -1214,9 +1266,9 @@
     parse-json "^5.0.0"
 
 "@semantic-release/github@^7.0.0":
-  version "7.0.4"
-  resolved "https://registry.yarnpkg.com/@semantic-release/github/-/github-7.0.4.tgz#6a62c020d086b84e723e143c78b4d72078e87d28"
-  integrity sha512-qQi41eGIa/tne7T8rvQK+xJNoyadOmd5mVsNZUUqZCVueiUkCItspJ7Mgy5ZWuhwlo28+hKeT/4zJ6MIG6er2Q==
+  version "7.0.6"
+  resolved "https://registry.yarnpkg.com/@semantic-release/github/-/github-7.0.6.tgz#4e2b30ba94afb6dad8e6fe9bd960d9be108f6992"
+  integrity sha512-70fUj+t98AWRgeOG0j2kdguvaVyysOZRUmXykZBwkktSDm1UZ6YfelYFPuM9OJbKPuNjKsCsRXl5/wukDUg8PA==
   dependencies:
     "@octokit/rest" "^17.0.0"
     "@semantic-release/error" "^2.2.0"
@@ -1224,7 +1276,7 @@
     bottleneck "^2.18.1"
     debug "^4.0.0"
     dir-glob "^3.0.0"
-    fs-extra "^8.0.0"
+    fs-extra "^9.0.0"
     globby "^11.0.0"
     http-proxy-agent "^4.0.0"
     https-proxy-agent "^5.0.0"
@@ -1236,14 +1288,14 @@
     url-join "^4.0.0"
 
 "@semantic-release/npm@^7.0.0":
-  version "7.0.3"
-  resolved "https://registry.yarnpkg.com/@semantic-release/npm/-/npm-7.0.3.tgz#0831f837c8e63cafd3c8a9e052b5aaf99a5a4921"
-  integrity sha512-3wOXMtAdJkaAnW5183iSmWSimtUmOx7m6g/DWPYRs2Gq6iyB+ztMmhgwbn6luNcM9t6pGbgHvRPEXpWkygMxCA==
+  version "7.0.5"
+  resolved "https://registry.yarnpkg.com/@semantic-release/npm/-/npm-7.0.5.tgz#61c45691abb863f6939cca6aac958d3c22508632"
+  integrity sha512-D+oEmsx9aHE1q806NFQwSC9KdBO8ri/VO99eEz0wWbX2jyLqVyWr7t0IjKC8aSnkkQswg/4KN/ZjfF6iz1XOpw==
   dependencies:
     "@semantic-release/error" "^2.2.0"
     aggregate-error "^3.0.0"
     execa "^4.0.0"
-    fs-extra "^8.0.0"
+    fs-extra "^9.0.0"
     lodash "^4.17.15"
     nerf-dart "^1.0.0"
     normalize-url "^5.0.0"
@@ -1252,7 +1304,7 @@
     read-pkg "^5.0.0"
     registry-auth-token "^4.0.0"
     semver "^7.1.2"
-    tempy "^0.4.0"
+    tempy "^0.5.0"
 
 "@semantic-release/release-notes-generator@^9.0.0":
   version "9.0.1"
@@ -1280,10 +1332,10 @@
   resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea"
   integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==
 
-"@sinonjs/commons@^1", "@sinonjs/commons@^1.6.0", "@sinonjs/commons@^1.7.0":
-  version "1.7.1"
-  resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.7.1.tgz#da5fd19a5f71177a53778073978873964f49acf1"
-  integrity sha512-Debi3Baff1Qu1Unc3mjJ96MgpbwTn43S1+9yJ0llWygPwDNu2aaWBD6yc9y/Z8XDRNhx7U+u2UDg2OGQXkclUQ==
+"@sinonjs/commons@^1", "@sinonjs/commons@^1.6.0", "@sinonjs/commons@^1.7.0", "@sinonjs/commons@^1.7.2":
+  version "1.7.2"
+  resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.7.2.tgz#505f55c74e0272b43f6c52d81946bed7058fc0e2"
+  integrity sha512-+DUO6pnp3udV/v2VfUWgaY5BIE1IfT7lLfeDzPVeMT1XKkaAp9LgSI9x5RtrFQoZ9Oi0PgXQQHPaoKu7dCjVxw==
   dependencies:
     type-detect "4.0.8"
 
@@ -1336,9 +1388,9 @@
     defer-to-connect "^1.0.1"
 
 "@tootallnate/once@1":
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.0.0.tgz#9c13c2574c92d4503b005feca8f2e16cc1611506"
-  integrity sha512-KYyTT/T6ALPkIRd2Ge080X/BsXvy9O0hcWTtMWkPvwAwF99+vn6Dv4GzrFT/Nn1LePr+FFDbRXXlqmsy9lw2zA==
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82"
+  integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==
 
 "@types/babel__core@^7.1.7":
   version "7.1.7"
@@ -1352,9 +1404,9 @@
     "@types/babel__traverse" "*"
 
 "@types/babel__generator@*":
-  version "7.6.0"
-  resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.0.tgz#f1ec1c104d1bb463556ecb724018ab788d0c172a"
-  integrity sha512-c1mZUu4up5cp9KROs/QAw0gTeHrw/x7m52LcnvMxxOZ03DmLwPV0MlGmlgzV3cnSdjhJOZsj7E7FHeioai+egw==
+  version "7.6.1"
+  resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04"
+  integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew==
   dependencies:
     "@babel/types" "^7.0.0"
 
@@ -1367,9 +1419,9 @@
     "@babel/types" "^7.0.0"
 
 "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6":
-  version "7.0.8"
-  resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.8.tgz#479a4ee3e291a403a1096106013ec22cf9b64012"
-  integrity sha512-yGeB2dHEdvxjP0y4UbRtQaSkXJ9649fYCmIdRoul5kfAoGCwxuCbMhag0k3RPfnuh9kPGm8x89btcfDEXdVWGw==
+  version "7.0.11"
+  resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.11.tgz#1ae3010e8bf8851d324878b42acec71986486d18"
+  integrity sha512-ddHK5icION5U6q11+tV2f9Mo6CZVuT8GJKld2q9LqHSZbvLbH34Kcu2yFGckZut453+eQU6btIA3RihmnRgI+Q==
   dependencies:
     "@babel/types" "^7.3.0"
 
@@ -1478,21 +1530,21 @@
   integrity sha512-2+iF8zPSbpU83UKE+PNd4r/MhwNAdyGpk3H+VMgEH3EhjFZq1kouLgRoZrmIcmoGX97xFvqdS44DkICR5Nz3tQ==
 
 "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1":
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff"
-  integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.2.tgz#79d7a78bad4219f4c03d6557a1c72d9ca6ba62d5"
+  integrity sha512-rsZg7eL+Xcxsxk2XlBt9KcG8nOp9iYdKCOikY9x2RFJCyOdNj4MKPQty0e8oZr29vVAzKXr1BmR+kZauti3o1w==
 
 "@types/istanbul-lib-report@*":
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#e5471e7fa33c61358dd38426189c037a58433b8c"
-  integrity sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg==
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686"
+  integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==
   dependencies:
     "@types/istanbul-lib-coverage" "*"
 
 "@types/istanbul-reports@^1.1.1":
-  version "1.1.1"
-  resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz#7a8cbf6a406f36c8add871625b278eaf0b0d255a"
-  integrity sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2"
+  integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==
   dependencies:
     "@types/istanbul-lib-coverage" "*"
     "@types/istanbul-lib-report" "*"
@@ -1563,6 +1615,11 @@
   resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
   integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
 
+"@types/minimist@^1.2.0":
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.0.tgz#69a23a3ad29caf0097f06eda59b361ee2f0639f6"
+  integrity sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=
+
 "@types/moment-timezone@0.5.13":
   version "0.5.13"
   resolved "https://registry.yarnpkg.com/@types/moment-timezone/-/moment-timezone-0.5.13.tgz#0317ccc91eb4c7f4901704166166395c39276528"
@@ -1583,9 +1640,9 @@
   integrity sha512-0fRfA90FWm6KJfw6P9QGyo0HDTCmthZ7cWaBQndITlaWLTZ6njRyKwrwpzpg+n6kBXBIGKeUHEQuBx7bphGJkA==
 
 "@types/node@*", "@types/node@>= 8":
-  version "12.12.11"
-  resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.11.tgz#bec2961975888d964196bf0016a2f984d793d3ce"
-  integrity sha512-O+x6uIpa6oMNTkPuHDa9MhMMehlxLAd5QcOvKRjAFsBVpeFWTOPnXbDvILvFgFFZfQ1xh1EZi1FbXxUix+zpsQ==
+  version "14.0.1"
+  resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.1.tgz#5d93e0a099cd0acd5ef3d5bde3c086e1f49ff68c"
+  integrity sha512-FAYBGwC+W6F9+huFIDtn43cpy7+SzG+atzRiTfdp3inUKL2hXnd4rG8hylJLIh4+hqrQy1P17kvJByE/z825hA==
 
 "@types/node@11.15.12":
   version "11.15.12"
@@ -1663,9 +1720,9 @@
   integrity sha512-flgpHJjntpBAdJD43ShRosQvNC0ME97DCfGvZEDlAThQmnerRXrLbX6YgzRBQCZTthET9eAWFAMaYP0m0Y4HzQ==
 
 "@types/tough-cookie@*":
-  version "2.3.5"
-  resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-2.3.5.tgz#9da44ed75571999b65c37b60c9b2b88db54c585d"
-  integrity sha512-SCcK7mvGi3+ZNz833RRjFIxrn4gI1PPR3NtuIS+6vMkvmsGjosqTJwRt5bAEFLRz+wtJMWv8+uOnZf2hi2QXTg==
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.0.tgz#fef1904e4668b6e5ecee60c52cc6a078ffa6697d"
+  integrity sha512-I99sngh224D0M7XgW1s120zxCt3VYQ3IQsuw3P3jbq5GG4yc79+ZjyKznyOGIQrflfylLgcfekeZW/vk0yng6A==
 
 "@types/traverse@0.6.32":
   version "0.6.32"
@@ -1678,14 +1735,21 @@
   integrity sha512-a/ONNCf9itbmzEz1ohx0Fv5TLJzXIPQTapxFu+DlYlDtn9UcAa1OhnrOOMwbU8125hFjrkJKL3qllD7vO5Bivw==
 
 "@types/yargs-parser@*":
-  version "13.1.0"
-  resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-13.1.0.tgz#c563aa192f39350a1d18da36c5a8da382bbd8228"
-  integrity sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg==
+  version "15.0.0"
+  resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d"
+  integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==
+
+"@types/yargs@^13.0.0":
+  version "13.0.9"
+  resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.9.tgz#44028e974343c7afcf3960f1a2b1099c39a7b5e1"
+  integrity sha512-xrvhZ4DZewMDhoH1utLtOAwYQy60eYFoXeje30TzM3VOvQlBwQaEpKFq5m34k1wOw2AKIi2pwtiAjdmhvlBUzg==
+  dependencies:
+    "@types/yargs-parser" "*"
 
 "@types/yargs@^15.0.0":
-  version "15.0.3"
-  resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.3.tgz#41453a0bc7ab393e995d1f5451455638edbd2baf"
-  integrity sha512-XCMQRK6kfpNBixHLyHUsGmXrpEmFFxzMrcnSXFMziHd8CoNJo8l16FkHyQq4x+xbM7E2XL83/O78OD8u+iZTdQ==
+  version "15.0.5"
+  resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.5.tgz#947e9a6561483bdee9adffc983e91a6902af8b79"
+  integrity sha512-Dk/IDOPtOgubt/IaevIUbTgV7doaKkoorvOyYM2CMwuDyP89bekI7H4xLIwunNYiK9jhCkmc6pUrJk3cj2AB9w==
   dependencies:
     "@types/yargs-parser" "*"
 
@@ -1699,7 +1763,7 @@
     regexpp "^3.0.0"
     tsutils "^3.17.1"
 
-"@typescript-eslint/experimental-utils@2.33.0":
+"@typescript-eslint/experimental-utils@2.33.0", "@typescript-eslint/experimental-utils@^2.5.0":
   version "2.33.0"
   resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.33.0.tgz#000f1e5f344fbea1323dc91cc174805d75f99a03"
   integrity sha512-qzPM2AuxtMrRq78LwyZa8Qn6gcY8obkIrBs1ehqmQADwkYzTE1Pb4y2W+U3rE/iFkSWcWHG2LS6MJfj6SmHApg==
@@ -1763,20 +1827,20 @@ acorn-globals@^6.0.0:
     acorn "^7.1.1"
     acorn-walk "^7.1.1"
 
-acorn-jsx@^5.1.0:
-  version "5.1.0"
-  resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.1.0.tgz#294adb71b57398b0680015f0a38c563ee1db5384"
-  integrity sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==
+acorn-jsx@^5.2.0:
+  version "5.2.0"
+  resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe"
+  integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==
 
 acorn-walk@^7.1.1:
   version "7.1.1"
   resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.1.1.tgz#345f0dffad5c735e7373d2fec9a1023e6a44b83e"
   integrity sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ==
 
-"acorn@>=6.4.1 <7.0.0 || >=7.1.1", acorn@^7.1.0, acorn@^7.1.1:
-  version "7.1.1"
-  resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf"
-  integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==
+"acorn@>=6.4.1 <7.0.0 || >=7.1.1", acorn@^7.1.1:
+  version "7.2.0"
+  resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.2.0.tgz#17ea7e40d7c8640ff54a694c889c26f31704effe"
+  integrity sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ==
 
 agent-base@4, agent-base@^4.3.0:
   version "4.3.0"
@@ -1815,11 +1879,11 @@ aggregate-error@^3.0.0:
     indent-string "^4.0.0"
 
 ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5:
-  version "6.10.2"
-  resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52"
-  integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==
+  version "6.12.2"
+  resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd"
+  integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==
   dependencies:
-    fast-deep-equal "^2.0.1"
+    fast-deep-equal "^3.1.1"
     fast-json-stable-stringify "^2.0.0"
     json-schema-traverse "^0.4.1"
     uri-js "^4.2.2"
@@ -1831,7 +1895,7 @@ ansi-align@^2.0.0:
   dependencies:
     string-width "^2.0.0"
 
-ansi-escapes@^4.2.1, ansi-escapes@^4.3.0:
+ansi-escapes@^4.2.1, ansi-escapes@^4.3.1:
   version "4.3.1"
   resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61"
   integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==
@@ -1848,7 +1912,7 @@ ansi-regex@^3.0.0:
   resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
   integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
 
-ansi-regex@^4.1.0:
+ansi-regex@^4.0.0, ansi-regex@^4.1.0:
   version "4.1.0"
   resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
   integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
@@ -1965,12 +2029,13 @@ array-ify@^1.0.0:
   integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=
 
 array-includes@^3.0.3:
-  version "3.0.3"
-  resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d"
-  integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=
+  version "3.1.1"
+  resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348"
+  integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==
   dependencies:
-    define-properties "^1.1.2"
-    es-abstract "^1.7.0"
+    define-properties "^1.1.3"
+    es-abstract "^1.17.0"
+    is-string "^1.0.5"
 
 array-union@^2.1.0:
   version "2.1.0"
@@ -1983,13 +2048,12 @@ array-unique@^0.3.2:
   integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
 
 array.prototype.flat@^1.2.1:
-  version "1.2.2"
-  resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.2.tgz#8f3c71d245ba349b6b64b4078f76f5576f1fd723"
-  integrity sha512-VXjh7lAL4KXKF2hY4FnEW9eRW6IhdvFW1sN/JwLbmECbCgACCnBHNyP3lFiYuttr0jxRN9Bsc5+G27dMseSWqQ==
+  version "1.2.3"
+  resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b"
+  integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==
   dependencies:
     define-properties "^1.1.3"
-    es-abstract "^1.15.0"
-    function-bind "^1.1.1"
+    es-abstract "^1.17.0-next.1"
 
 arrify@^1.0.0, arrify@^1.0.1:
   version "1.0.1"
@@ -2043,7 +2107,7 @@ at-least-node@^1.0.0:
   resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
   integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
 
-atob@^2.1.1:
+atob@^2.1.2:
   version "2.1.2"
   resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
   integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
@@ -2057,7 +2121,7 @@ aws-sdk-mock@5.1.0:
     sinon "^9.0.1"
     traverse "^0.6.6"
 
-aws-sdk@2.662.0, aws-sdk@^2.637.0:
+aws-sdk@2.662.0:
   version "2.662.0"
   resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.662.0.tgz#c41c809648104b8aba6276e12eb7ad43a6fca40d"
   integrity sha512-emZOIKHCV2EHByRNAm7d++1ugzRpLx4WhMm+T9ydy/OyKcOGVAAMPVW0Mib5GXuWpC6A6aE7ACi3pZTjK9LMQA==
@@ -2072,15 +2136,30 @@ aws-sdk@2.662.0, aws-sdk@^2.637.0:
     uuid "3.3.2"
     xml2js "0.4.19"
 
+aws-sdk@^2.637.0:
+  version "2.678.0"
+  resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.678.0.tgz#b16230f4894d40ead50f9e23805c874f4ca62549"
+  integrity sha512-i8t7+1/C6maQzUYUFRQXPAsUPT0YdpNsf/oHZKmmZrsOX+epnn2jmAGIBTZgUakY8jRrZxCJka+QokUIadUVQg==
+  dependencies:
+    buffer "4.9.1"
+    events "1.1.1"
+    ieee754 "1.1.13"
+    jmespath "0.15.0"
+    querystring "0.2.0"
+    sax "1.2.1"
+    url "0.10.3"
+    uuid "3.3.2"
+    xml2js "0.4.19"
+
 aws-sign2@~0.7.0:
   version "0.7.0"
   resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
   integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
 
 aws4@^1.8.0:
-  version "1.8.0"
-  resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f"
-  integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==
+  version "1.9.1"
+  resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e"
+  integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==
 
 azure-devops-node-api@10.1.1:
   version "10.1.1"
@@ -2162,9 +2241,9 @@ backslash@^0.2.0:
   integrity sha1-bDwfzn5+cUzPwQ/XTw9zQQZ3N18=
 
 bail@^1.0.0:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.4.tgz#7181b66d508aa3055d3f6c13f0a0c720641dde9b"
-  integrity sha512-S8vuDB4w6YpRhICUDET3guPlQpaJl7od94tpZ0Fvnyp+MKW/HyDTcRDck+29C9g+d/qQHnddRH3+94kZdrW0Ww==
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776"
+  integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==
 
 balanced-match@^1.0.0:
   version "1.0.0"
@@ -2202,9 +2281,9 @@ before-after-hook@^2.1.0:
   integrity sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A==
 
 bin-links@^1.1.2, bin-links@^1.1.7:
-  version "1.1.7"
-  resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-1.1.7.tgz#34b79ea9d0e575d7308afeff0c6b2fc24c793359"
-  integrity sha512-/eaLaTu7G7/o7PV04QPy1HRT65zf+1tFkPGv0sPTV0tRwufooYBQO3zrcyGgm+ja+ZtBf2GEuKjDRJ2pPG+yqA==
+  version "1.1.8"
+  resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-1.1.8.tgz#bd39aadab5dc4bdac222a07df5baf1af745b2228"
+  integrity sha512-KgmVfx+QqggqP9dA3iIc5pA4T1qEEEL+hOhOhNPaUm77OTrJoOXE/C05SJLNJe6m/2wUK7F1tDSou7n5TfCDzQ==
   dependencies:
     bluebird "^3.5.3"
     cmd-shim "^3.0.0"
@@ -2218,15 +2297,22 @@ binary-extensions@^1.0.0:
   resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65"
   integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==
 
+bindings@^1.5.0:
+  version "1.5.0"
+  resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df"
+  integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==
+  dependencies:
+    file-uri-to-path "1.0.0"
+
 bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5:
-  version "3.7.1"
-  resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.1.tgz#df70e302b471d7473489acf26a93d63b53f874de"
-  integrity sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==
+  version "3.7.2"
+  resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
+  integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
 
 boolean@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.0.0.tgz#fab78d5907dbae6216ab46d32733bb7b76b99e76"
-  integrity sha512-OElxJ1lUSinuoUnkpOgLmxp0DC4ytEhODEL6QJU0NpxE/mI4rUSh8h1P1Wkvfi3xQEBcxXR2gBIPNYNuaFcAbQ==
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.0.1.tgz#35ecf2b4a2ee191b0b44986f14eb5f052a5cbb4f"
+  integrity sha512-HRZPIjPcbwAVQvOTxR4YE3o8Xs98NqbbL1iEZDCz7CL8ql0Lt5iOyJFxfnAB0oFs8Oh02F/lLlg30Mexv46LjA==
 
 bottleneck@^2.18.1:
   version "2.19.5"
@@ -2282,7 +2368,7 @@ browser-process-hrtime@^1.0.0:
   resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626"
   integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==
 
-browserslist@^4.11.1, browserslist@^4.8.3:
+browserslist@^4.11.1, browserslist@^4.8.5:
   version "4.12.0"
   resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.0.tgz#06c6d5715a1ede6c51fc39ff67fd647f740b656d"
   integrity sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==
@@ -2292,7 +2378,7 @@ browserslist@^4.11.1, browserslist@^4.8.3:
     node-releases "^1.1.53"
     pkg-up "^2.0.0"
 
-bser@^2.0.0:
+bser@2.1.1:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05"
   integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==
@@ -2362,9 +2448,9 @@ cacache@15.0.3:
     unique-filename "^1.1.1"
 
 cacache@^12.0.0, cacache@^12.0.2, cacache@^12.0.3:
-  version "12.0.3"
-  resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390"
-  integrity sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==
+  version "12.0.4"
+  resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c"
+  integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==
   dependencies:
     bluebird "^3.5.5"
     chownr "^1.1.1"
@@ -2429,6 +2515,15 @@ camelcase-keys@^4.0.0:
     map-obj "^2.0.0"
     quick-lru "^1.0.0"
 
+camelcase-keys@^6.2.2:
+  version "6.2.2"
+  resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0"
+  integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==
+  dependencies:
+    camelcase "^5.3.1"
+    map-obj "^4.0.0"
+    quick-lru "^4.0.1"
+
 camelcase@^4.0.0, camelcase@^4.1.0:
   version "4.1.0"
   resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
@@ -2445,9 +2540,9 @@ camelcase@^6.0.0:
   integrity sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w==
 
 caniuse-lite@^1.0.30001043:
-  version "1.0.30001048"
-  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001048.tgz#4bb4f1bc2eb304e5e1154da80b93dee3f1cf447e"
-  integrity sha512-g1iSHKVxornw0K8LG9LLdf+Fxnv7T1Z+mMsf0/YYLclQX4Cd522Ap0Lrw6NFqHgezit78dtyWxzlV2Xfc7vgRg==
+  version "1.0.30001061"
+  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001061.tgz#80ca87ef14eb543a7458e7fd2b5e2face3458c9f"
+  integrity sha512-SMICCeiNvMZnyXpuoO+ot7FHpMVPlrsR+HmfByj6nY4xYDHXLqMTbgH7ecEkDNXWkH1vaip+ZS0D7VTXwM1KYQ==
 
 capture-exit@^2.0.0:
   version "2.0.0"
@@ -2475,9 +2570,9 @@ caseless@~0.12.0:
   integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
 
 ccount@^1.0.0:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.4.tgz#9cf2de494ca84060a2a8d2854edd6dfb0445f386"
-  integrity sha512-fpZ81yYfzentuieinmGnphk0pLkOTMm6MZdVqwd77ROvhko6iujLNGrHH5E7utq3ygWklwfmwuG+A7P+NpqT6w==
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.5.tgz#ac82a944905a65ce204eb03023157edf29425c17"
+  integrity sha512-MOli1W+nfbPLlKEhInaxhRdp7KVLFxLN5ykwzHgLsLI3H3gs5jjFAK4Eoj3OzzcxCtumDaI8onoVDeQyWaNTkw==
 
 chalk@4.0.0, chalk@^4.0.0:
   version "4.0.0"
@@ -2515,24 +2610,24 @@ char-regex@^1.0.2:
   integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==
 
 character-entities-html4@^1.0.0:
-  version "1.1.3"
-  resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.3.tgz#5ce6e01618e47048ac22f34f7f39db5c6fd679ef"
-  integrity sha512-SwnyZ7jQBCRHELk9zf2CN5AnGEc2nA+uKMZLHvcqhpPprjkYhiLn0DywMHgN5ttFZuITMATbh68M6VIVKwJbcg==
+  version "1.1.4"
+  resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.4.tgz#0e64b0a3753ddbf1fdc044c5fd01d0199a02e125"
+  integrity sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==
 
 character-entities-legacy@^1.0.0:
-  version "1.1.3"
-  resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.3.tgz#3c729991d9293da0ede6dddcaf1f2ce1009ee8b4"
-  integrity sha512-YAxUpPoPwxYFsslbdKkhrGnXAtXoHNgYjlBM3WMXkWGTl5RsY3QmOyhwAgL8Nxm9l5LBThXGawxKPn68y6/fww==
+  version "1.1.4"
+  resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1"
+  integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==
 
 character-entities@^1.0.0:
-  version "1.2.3"
-  resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.3.tgz#bbed4a52fe7ef98cc713c6d80d9faa26916d54e6"
-  integrity sha512-yB4oYSAa9yLcGyTbB4ItFwHw43QHdH129IJ5R+WvxOkWlyFnR5FAaBNnUq4mcxsTVZGh28bHoeTHMKXH1wZf3w==
+  version "1.2.4"
+  resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b"
+  integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==
 
 character-reference-invalid@^1.0.0:
-  version "1.1.3"
-  resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.3.tgz#1647f4f726638d3ea4a750cf5d1975c1c7919a85"
-  integrity sha512-VOq6PRzQBam/8Jm6XBGk2fNEnHXAdGd6go0rtd4weAGECBamHDwwCQSOT12TACIYUZegUXnV6xBXqUssijtxIg==
+  version "1.1.4"
+  resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560"
+  integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==
 
 chardet@^0.7.0:
   version "0.7.0"
@@ -2643,9 +2738,18 @@ cli-table@^0.3.1:
     colors "1.0.3"
 
 cli-width@^2.0.0:
-  version "2.2.0"
-  resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639"
-  integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=
+  version "2.2.1"
+  resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48"
+  integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==
+
+cliui@^3.2.0:
+  version "3.2.0"
+  resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d"
+  integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=
+  dependencies:
+    string-width "^1.0.1"
+    strip-ansi "^3.0.1"
+    wrap-ansi "^2.0.0"
 
 cliui@^4.0.0:
   version "4.1.0"
@@ -2696,14 +2800,14 @@ code-point-at@^1.0.0:
   integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
 
 collapse-white-space@^1.0.2:
-  version "1.0.5"
-  resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.5.tgz#c2495b699ab1ed380d29a1091e01063e75dbbe3a"
-  integrity sha512-703bOOmytCYAX9cXYqoikYIx6twmFCXsnzRQheBcTG3nzKYBR4P/+wkYeH+Mvj7qUz8zZDtdyzbxfnEi/kYzRQ==
+  version "1.0.6"
+  resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287"
+  integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==
 
 collect-v8-coverage@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.0.tgz#150ee634ac3650b71d9c985eb7f608942334feb1"
-  integrity sha512-VKIhJgvk8E1W28m5avZ2Gv2Ruv5YiF56ug2oclvaG9md69BuZImMG2sk9g7QNKLUbtYAKQjXjYxbYZVUlMMKmQ==
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59"
+  integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==
 
 collection-visit@^1.0.0:
   version "1.0.0"
@@ -2783,9 +2887,9 @@ commondir@^1.0.1:
   integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
 
 compare-func@^1.3.1:
-  version "1.3.2"
-  resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-1.3.2.tgz#99dd0ba457e1f9bc722b12c08ec33eeab31fa648"
-  integrity sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=
+  version "1.3.4"
+  resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-1.3.4.tgz#6b07c4c5e8341119baf44578085bda0f4a823516"
+  integrity sha512-sq2sWtrqKPkEXAC8tEJA1+BqAH9GbFkGBtUOqrUX57VSfwp8xyktctk+uLoRy5eccTdxzDcVIztlYDpKs3Jv1Q==
   dependencies:
     array-ify "^1.0.0"
     dot-prop "^3.0.0"
@@ -2835,7 +2939,7 @@ configstore@^3.0.0:
     write-file-atomic "^2.0.0"
     xdg-basedir "^3.0.0"
 
-confusing-browser-globals@^1.0.7:
+confusing-browser-globals@^1.0.9:
   version "1.0.9"
   resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd"
   integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==
@@ -2851,9 +2955,9 @@ contains-path@^0.1.0:
   integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=
 
 conventional-changelog-angular@^5.0.0:
-  version "5.0.6"
-  resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.6.tgz#269540c624553aded809c29a3508fdc2b544c059"
-  integrity sha512-QDEmLa+7qdhVIv8sFZfVxU1VSyVvnXPsxq8Vam49mKUcO1Z8VTLEJk9uI21uiJUsnmm0I4Hrsdc9TgkOQo9WSA==
+  version "5.0.10"
+  resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.10.tgz#5cf7b00dd315b6a6a558223c80d5ef24ddb34205"
+  integrity sha512-k7RPPRs0vp8+BtPsM9uDxRl6KcgqtCJmzRD1wRtgqmhQ96g8ifBGo9O/TZBG23jqlXS/rg8BKRDELxfnQQGiaA==
   dependencies:
     compare-func "^1.3.1"
     q "^1.5.1"
@@ -2868,17 +2972,17 @@ conventional-changelog-conventionalcommits@4.3.0:
     q "^1.5.1"
 
 conventional-changelog-writer@^4.0.0:
-  version "4.0.11"
-  resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-4.0.11.tgz#9f56d2122d20c96eb48baae0bf1deffaed1edba4"
-  integrity sha512-g81GQOR392I+57Cw3IyP1f+f42ME6aEkbR+L7v1FBBWolB0xkjKTeCWVguzRrp6UiT1O6gBpJbEy2eq7AnV1rw==
+  version "4.0.16"
+  resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-4.0.16.tgz#ca10f2691a8ea6d3c2eb74bd35bcf40aa052dda5"
+  integrity sha512-jmU1sDJDZpm/dkuFxBeRXvyNcJQeKhGtVcFFkwTphUAzyYWcwz2j36Wcv+Mv2hU3tpvLMkysOPXJTLO55AUrYQ==
   dependencies:
     compare-func "^1.3.1"
-    conventional-commits-filter "^2.0.2"
+    conventional-commits-filter "^2.0.6"
     dateformat "^3.0.0"
-    handlebars "^4.4.0"
+    handlebars "^4.7.6"
     json-stringify-safe "^5.0.1"
     lodash "^4.17.15"
-    meow "^5.0.0"
+    meow "^7.0.0"
     semver "^6.0.0"
     split "^1.0.0"
     through2 "^3.0.0"
@@ -2893,23 +2997,23 @@ conventional-commits-detector@1.0.2:
     meow "^5.0.0"
     through2-concurrent "^2.0.0"
 
-conventional-commits-filter@^2.0.0, conventional-commits-filter@^2.0.2:
-  version "2.0.2"
-  resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.2.tgz#f122f89fbcd5bb81e2af2fcac0254d062d1039c1"
-  integrity sha512-WpGKsMeXfs21m1zIw4s9H5sys2+9JccTzpN6toXtxhpw2VNF2JUXwIakthKBy+LN4DvJm+TzWhxOMWOs1OFCFQ==
+conventional-commits-filter@^2.0.0, conventional-commits-filter@^2.0.6:
+  version "2.0.6"
+  resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.6.tgz#0935e1240c5ca7698329affee1b6a46d33324c4c"
+  integrity sha512-4g+sw8+KA50/Qwzfr0hL5k5NWxqtrOVw4DDk3/h6L85a9Gz0/Eqp3oP+CWCNfesBvZZZEFHF7OTEbRe+yYSyKw==
   dependencies:
     lodash.ismatch "^4.4.0"
     modify-values "^1.0.0"
 
 conventional-commits-parser@^3.0.0, conventional-commits-parser@^3.0.7:
-  version "3.0.8"
-  resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.0.8.tgz#23310a9bda6c93c874224375e72b09fb275fe710"
-  integrity sha512-YcBSGkZbYp7d+Cr3NWUeXbPDFUN6g3SaSIzOybi8bjHL5IJ5225OSCxJJ4LgziyEJ7AaJtE9L2/EU6H7Nt/DDQ==
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.1.0.tgz#10140673d5e7ef5572633791456c5d03b69e8be4"
+  integrity sha512-RSo5S0WIwXZiRxUGTPuYFbqvrR4vpJ1BDdTlthFgvHt5kEdnd1+pdvwWphWn57/oIl4V72NMmOocFqqJ8mFFhA==
   dependencies:
     JSONStream "^1.0.4"
     is-text-path "^1.0.1"
     lodash "^4.17.15"
-    meow "^5.0.0"
+    meow "^7.0.0"
     split2 "^2.0.0"
     through2 "^3.0.0"
     trim-off-newlines "^1.0.0"
@@ -2939,17 +3043,17 @@ copy-descriptor@^0.1.0:
   integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
 
 core-js-compat@^3.6.2:
-  version "3.6.4"
-  resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.4.tgz#938476569ebb6cda80d339bcf199fae4f16fff17"
-  integrity sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA==
+  version "3.6.5"
+  resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c"
+  integrity sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==
   dependencies:
-    browserslist "^4.8.3"
+    browserslist "^4.8.5"
     semver "7.0.0"
 
 core-js@^3.2.1, core-js@^3.6.4:
-  version "3.6.4"
-  resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.4.tgz#440a83536b458114b9cb2ac1580ba377dc470647"
-  integrity sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw==
+  version "3.6.5"
+  resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a"
+  integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==
 
 core-util-is@1.0.2, core-util-is@~1.0.0:
   version "1.0.2"
@@ -3002,9 +3106,9 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5:
     which "^1.2.9"
 
 cross-spawn@^7.0.0, cross-spawn@^7.0.1:
-  version "7.0.1"
-  resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14"
-  integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==
+  version "7.0.2"
+  resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.2.tgz#d0d7dcfa74e89115c7619f4f721a94e1fdb716d6"
+  integrity sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==
   dependencies:
     path-key "^3.1.0"
     shebang-command "^2.0.0"
@@ -3049,12 +3153,10 @@ cyclist@^1.0.1:
   resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9"
   integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=
 
-dargs@^4.0.1:
-  version "4.1.0"
-  resolved "https://registry.yarnpkg.com/dargs/-/dargs-4.1.0.tgz#03a9dbb4b5c2f139bf14ae53f0b8a2a6a86f4e17"
-  integrity sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc=
-  dependencies:
-    number-is-nan "^1.0.0"
+dargs@^7.0.0:
+  version "7.0.0"
+  resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc"
+  integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==
 
 dashdash@^1.12.0:
   version "1.14.1"
@@ -3098,19 +3200,19 @@ debug@^2.2.0, debug@^2.3.3, debug@^2.6.9:
   dependencies:
     ms "2.0.0"
 
-debug@^3.1.0, debug@^3.2.6:
+debug@^3.1.0:
   version "3.2.6"
   resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
   integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
   dependencies:
     ms "^2.1.1"
 
-debuglog@^1.0.1:
+debuglog@*, debuglog@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492"
   integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=
 
-decamelize-keys@^1.0.0:
+decamelize-keys@^1.0.0, decamelize-keys@^1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9"
   integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=
@@ -3168,9 +3270,9 @@ defaults@^1.0.3:
     clone "^1.0.2"
 
 defer-to-connect@^1.0.1:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.0.tgz#b41bd7efa8508cef13f8456975f7a278c72833fd"
-  integrity sha512-WE2sZoctWm/v4smfCAdjYbrfS55JiMRdlY9ZubFhsYbteCK9+BvAx4YV7nPjYM6ZnX5BcoVKwfmyx9sIFTgQMQ==
+  version "1.1.3"
+  resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591"
+  integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==
 
 define-properties@^1.1.2, define-properties@^1.1.3:
   version "1.1.3"
@@ -3231,11 +3333,6 @@ detect-indent@~5.0.0:
   resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d"
   integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50=
 
-detect-libc@^1.0.2:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
-  integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
-
 detect-newline@^2.1.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2"
@@ -3259,6 +3356,11 @@ dezalgo@^1.0.0, dezalgo@~1.0.3:
     asap "^2.0.0"
     wrappy "1"
 
+diff-sequences@^24.9.0:
+  version "24.9.0"
+  resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5"
+  integrity sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==
+
 diff-sequences@^25.2.6:
   version "25.2.6"
   resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd"
@@ -3365,9 +3467,9 @@ editor@~1.0.0:
   integrity sha1-YMf4e9YrzGqJT6jM1q+3gjok90I=
 
 electron-to-chromium@^1.3.413:
-  version "1.3.427"
-  resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.427.tgz#ea43d02908a8c71f47ebb46e09de5a3cf8236f04"
-  integrity sha512-/rG5G7Opcw68/Yrb4qYkz07h3bESVRJjUl4X/FrKLXzoUJleKm6D7K7rTTz8V5LUWnd+BbTOyxJX2XprRqHD8A==
+  version "1.3.441"
+  resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.441.tgz#094f71b992dca5bc96b798cfbaf37dc76302015a"
+  integrity sha512-leBfJwLuyGs1jEei2QioI+PjVMavmUIvPYidE8dCCYWLAq0uefhN3NYgDNb8WxD3uiUNnJ3ScMXg0upSlwySzQ==
 
 email-addresses@3.1.0:
   version "3.1.0"
@@ -3399,14 +3501,14 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0:
     once "^1.4.0"
 
 entities@~2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4"
-  integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.2.tgz#ac74db0bba8d33808bbf36809c3a5c3683531436"
+  integrity sha512-dmD3AvJQBUjKpcNkoqr+x+IF0SdRtPz9Vk0uTy4yWqga9ibB6s4v++QFWNohjiUGoMlF552ZvNyXDxz5iW0qmw==
 
 env-ci@^5.0.0:
-  version "5.0.1"
-  resolved "https://registry.yarnpkg.com/env-ci/-/env-ci-5.0.1.tgz#f5904477d1e1ae7593110c133292171d8b1a5d6c"
-  integrity sha512-xXgohoOAFFF1Y3EdsSKP7olyH/DLS6ZD3aglV6mDFAXBqBXLJSsZLrOZdYfDs5mOmgNaP3YYynObzwF3QkC24g==
+  version "5.0.2"
+  resolved "https://registry.yarnpkg.com/env-ci/-/env-ci-5.0.2.tgz#48b6687f8af8cdf5e31b8fcf2987553d085249d9"
+  integrity sha512-Xc41mKvjouTXD3Oy9AqySz1IeyvJvHZ20Twf5ZLYbNpPPIuCnL/qHCmNlD01LoNy0JTunw9HPYVptD19Ac7Mbw==
   dependencies:
     execa "^4.0.0"
     java-properties "^1.0.0"
@@ -3435,21 +3537,22 @@ error-ex@^1.2.0, error-ex@^1.3.1:
   dependencies:
     is-arrayish "^0.2.1"
 
-es-abstract@^1.12.0, es-abstract@^1.15.0, es-abstract@^1.4.3, es-abstract@^1.5.1, es-abstract@^1.7.0:
-  version "1.16.3"
-  resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.16.3.tgz#52490d978f96ff9f89ec15b5cf244304a5bca161"
-  integrity sha512-WtY7Fx5LiOnSYgF5eg/1T+GONaGmpvpPdCpSnYij+U2gDTL0UPfWrhDw7b2IYb+9NQJsYpCA0wOQvZfsd6YwRw==
+es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.5:
+  version "1.17.5"
+  resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9"
+  integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==
   dependencies:
     es-to-primitive "^1.2.1"
     function-bind "^1.1.1"
     has "^1.0.3"
     has-symbols "^1.0.1"
-    is-callable "^1.1.4"
-    is-regex "^1.0.4"
+    is-callable "^1.1.5"
+    is-regex "^1.0.5"
     object-inspect "^1.7.0"
     object-keys "^1.1.1"
-    string.prototype.trimleft "^2.1.0"
-    string.prototype.trimright "^2.1.0"
+    object.assign "^4.1.0"
+    string.prototype.trimleft "^2.1.1"
+    string.prototype.trimright "^2.1.1"
 
 es-to-primitive@^1.2.1:
   version "1.2.1"
@@ -3499,14 +3602,14 @@ escodegen@^1.14.1:
   optionalDependencies:
     source-map "~0.6.1"
 
-eslint-config-airbnb-base@^14.0.0:
-  version "14.0.0"
-  resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.0.0.tgz#8a7bcb9643d13c55df4dd7444f138bf4efa61e17"
-  integrity sha512-2IDHobw97upExLmsebhtfoD3NAKhV4H0CJWP3Uprd/uk+cHuWYOczPVxQ8PxLFUAw7o3Th1RAU8u1DoUpr+cMA==
+eslint-config-airbnb-base@^14.0.0, eslint-config-airbnb-base@^14.1.0:
+  version "14.1.0"
+  resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.1.0.tgz#2ba4592dd6843258221d9bff2b6831bd77c874e4"
+  integrity sha512-+XCcfGyCnbzOnktDVhwsCAx+9DmrzEmuwxyHUJpw+kqBVT744OUBrB09khgFKlK1lshVww6qXGsYPZpavoNjJw==
   dependencies:
-    confusing-browser-globals "^1.0.7"
+    confusing-browser-globals "^1.0.9"
     object.assign "^4.1.0"
-    object.entries "^1.1.0"
+    object.entries "^1.1.1"
 
 eslint-config-airbnb-typescript@6.3.2:
   version "6.3.2"
@@ -3518,13 +3621,13 @@ eslint-config-airbnb-typescript@6.3.2:
     eslint-config-airbnb-base "^14.0.0"
 
 eslint-config-airbnb@^18.0.1:
-  version "18.0.1"
-  resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-18.0.1.tgz#a3a74cc29b46413b6096965025381df8fb908559"
-  integrity sha512-hLb/ccvW4grVhvd6CT83bECacc+s4Z3/AEyWQdIT2KeTsG9dR7nx1gs7Iw4tDmGKozCNHFn4yZmRm3Tgy+XxyQ==
+  version "18.1.0"
+  resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-18.1.0.tgz#724d7e93dadd2169492ff5363c5aaa779e01257d"
+  integrity sha512-kZFuQC/MPnH7KJp6v95xsLBf63G/w7YqdPfQ0MUanxQ7zcKUNG8j+sSY860g3NwCBOa62apw16J6pRN+AOgXzw==
   dependencies:
-    eslint-config-airbnb-base "^14.0.0"
+    eslint-config-airbnb-base "^14.1.0"
     object.assign "^4.1.0"
-    object.entries "^1.1.0"
+    object.entries "^1.1.1"
 
 eslint-config-prettier@6.11.0:
   version "6.11.0"
@@ -3534,17 +3637,17 @@ eslint-config-prettier@6.11.0:
     get-stdin "^6.0.0"
 
 eslint-import-resolver-node@^0.3.2:
-  version "0.3.2"
-  resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a"
-  integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==
+  version "0.3.3"
+  resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz#dbaa52b6b2816b50bc6711af75422de808e98404"
+  integrity sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg==
   dependencies:
     debug "^2.6.9"
-    resolve "^1.5.0"
+    resolve "^1.13.1"
 
 eslint-module-utils@^2.4.1:
-  version "2.5.0"
-  resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.5.0.tgz#cdf0b40d623032274ccd2abd7e64c4e524d6e19c"
-  integrity sha512-kCo8pZaNz2dsAW7nCUjuVoI11EBXXpIzfNxmaoLhXoRDOnqXLC4iSGVRdZPhOitfbdEfMEfKOiENaK6wDPZEGw==
+  version "2.6.0"
+  resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6"
+  integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==
   dependencies:
     debug "^2.6.9"
     pkg-dir "^2.0.0"
@@ -3567,6 +3670,13 @@ eslint-plugin-import@2.20.2:
     read-pkg-up "^2.0.0"
     resolve "^1.12.0"
 
+eslint-plugin-jest@23.8.2:
+  version "23.8.2"
+  resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-23.8.2.tgz#6f28b41c67ef635f803ebd9e168f6b73858eb8d4"
+  integrity sha512-xwbnvOsotSV27MtAe7s8uGWOori0nUsrXh2f1EnpmXua8sDfY6VZhHAhHg2sqK7HBNycRQExF074XSZ7DvfoFg==
+  dependencies:
+    "@typescript-eslint/experimental-utils" "^2.5.0"
+
 eslint-plugin-promise@4.2.1:
   version "4.2.1"
   resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz#845fd8b2260ad8f82564c1222fce44ad71d9418a"
@@ -3643,12 +3753,12 @@ eslint@6.8.0:
     v8-compile-cache "^2.0.3"
 
 espree@^6.1.2:
-  version "6.1.2"
-  resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.2.tgz#6c272650932b4f91c3714e5e7b5f5e2ecf47262d"
-  integrity sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==
+  version "6.2.1"
+  resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a"
+  integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==
   dependencies:
-    acorn "^7.1.0"
-    acorn-jsx "^5.1.0"
+    acorn "^7.1.1"
+    acorn-jsx "^5.2.0"
     eslint-visitor-keys "^1.1.0"
 
 esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0:
@@ -3657,11 +3767,11 @@ esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0:
   integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
 
 esquery@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708"
-  integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==
+  version "1.3.1"
+  resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57"
+  integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==
   dependencies:
-    estraverse "^4.0.0"
+    estraverse "^5.1.0"
 
 esrecurse@^4.1.0:
   version "4.2.1"
@@ -3670,11 +3780,16 @@ esrecurse@^4.1.0:
   dependencies:
     estraverse "^4.1.0"
 
-estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0:
+estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0:
   version "4.3.0"
   resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
   integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
 
+estraverse@^5.1.0:
+  version "5.1.0"
+  resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642"
+  integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==
+
 esutils@^2.0.2:
   version "2.0.3"
   resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
@@ -3732,9 +3847,9 @@ execa@^2.1.0:
     strip-final-newline "^2.0.0"
 
 execa@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.0.tgz#7f37d6ec17f09e6b8fc53288611695b6d12b9daf"
-  integrity sha512-JbDUxwV3BoT5ZVXQrSVbAiaXhXUkIwvbhPIwZ0N13kX+5yCzOhUNdocxB/UQRuYOHRYYwAxKYwJYc0T4D12pDA==
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.1.tgz#988488781f1f0238cd156f7aaede11c3e853b4c1"
+  integrity sha512-SCjM/zlBdOK8Q5TIjOn6iEHZaPHFsMoTxXQ2nvUvtPnuohz3H2dIozSg+etNR98dGoYUp2ENSKLL/XaMmbxVgw==
   dependencies:
     cross-spawn "^7.0.0"
     get-stream "^5.0.0"
@@ -3771,6 +3886,18 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2:
   dependencies:
     homedir-polyfill "^1.0.1"
 
+expect@^24.1.0:
+  version "24.9.0"
+  resolved "https://registry.yarnpkg.com/expect/-/expect-24.9.0.tgz#b75165b4817074fa4a157794f46fe9f1ba15b6ca"
+  integrity sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==
+  dependencies:
+    "@jest/types" "^24.9.0"
+    ansi-styles "^3.2.0"
+    jest-get-type "^24.9.0"
+    jest-matcher-utils "^24.9.0"
+    jest-message-util "^24.9.0"
+    jest-regex-util "^24.9.0"
+
 expect@^26.0.1:
   version "26.0.1"
   resolved "https://registry.yarnpkg.com/expect/-/expect-26.0.1.tgz#18697b9611a7e2725e20ba3ceadda49bc9865421"
@@ -3836,10 +3963,10 @@ extsprintf@^1.2.0:
   resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
   integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
 
-fast-deep-equal@^2.0.1:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
-  integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=
+fast-deep-equal@^3.1.1:
+  version "3.1.1"
+  resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4"
+  integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==
 
 fast-glob@^3.1.1:
   version "3.2.2"
@@ -3854,9 +3981,9 @@ fast-glob@^3.1.1:
     picomatch "^2.2.1"
 
 fast-json-stable-stringify@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
-  integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I=
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
+  integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
 
 fast-levenshtein@~2.0.6:
   version "2.0.6"
@@ -3869,23 +3996,23 @@ fast-safe-stringify@2.0.7:
   integrity sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==
 
 fastq@^1.6.0:
-  version "1.6.0"
-  resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.6.0.tgz#4ec8a38f4ac25f21492673adb7eae9cfef47d1c2"
-  integrity sha512-jmxqQ3Z/nXoeyDmWAzF9kH1aGZSis6e/SbfPmJpUnyZ0ogr6iscHQaml4wsEepEWSdtmpy+eVXmCRIMpxaXqOA==
+  version "1.8.0"
+  resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.8.0.tgz#550e1f9f59bbc65fe185cb6a9b4d95357107f481"
+  integrity sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==
   dependencies:
-    reusify "^1.0.0"
+    reusify "^1.0.4"
 
 fb-watchman@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58"
-  integrity sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85"
+  integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==
   dependencies:
-    bser "^2.0.0"
+    bser "2.1.1"
 
 figgy-pudding@^3.4.1, figgy-pudding@^3.5.1:
-  version "3.5.1"
-  resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790"
-  integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==
+  version "3.5.2"
+  resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e"
+  integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==
 
 figures@^2.0.0:
   version "2.0.0"
@@ -3895,9 +4022,9 @@ figures@^2.0.0:
     escape-string-regexp "^1.0.5"
 
 figures@^3.0.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/figures/-/figures-3.1.0.tgz#4b198dd07d8d71530642864af2d45dd9e459c4ec"
-  integrity sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==
+  version "3.2.0"
+  resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af"
+  integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==
   dependencies:
     escape-string-regexp "^1.0.5"
 
@@ -3913,6 +4040,11 @@ file-type@^7.6.0:
   resolved "https://registry.yarnpkg.com/file-type/-/file-type-7.7.1.tgz#91c2f5edb8ce70688b9b68a90d931bbb6cb21f65"
   integrity sha512-bTrKkzzZI6wH+NXhyD3SOXtb2zXTw2SbwI2RxUlRcXVsnN7jNL5hJzVQLYv7FOQhxFkK4XWdAflEaWFpaLLWpQ==
 
+file-uri-to-path@1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd"
+  integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==
+
 fill-range@^4.0.0:
   version "4.0.0"
   resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
@@ -3946,7 +4078,7 @@ find-npm-prefix@^1.0.2:
 
 find-up@4.1.0, find-up@^4.0.0, find-up@^4.1.0:
   version "4.1.0"
-  resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
+  resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
   integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
   dependencies:
     locate-path "^5.0.0"
@@ -3983,9 +4115,9 @@ flat-cache@^2.0.1:
     write "1.0.3"
 
 flatted@^2.0.0:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08"
-  integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138"
+  integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==
 
 flush-write-stream@^1.0.0:
   version "1.1.1"
@@ -4046,7 +4178,7 @@ from2@^2.1.0, from2@^2.3.0:
     inherits "^2.0.1"
     readable-stream "^2.0.0"
 
-fs-extra@9.0.0:
+fs-extra@9.0.0, fs-extra@^9.0.0:
   version "9.0.0"
   resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.0.tgz#b6afc31036e247b2466dc99c29ae797d5d4580a3"
   integrity sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==
@@ -4056,15 +4188,6 @@ fs-extra@9.0.0:
     jsonfile "^6.0.1"
     universalify "^1.0.0"
 
-fs-extra@^8.0.0:
-  version "8.1.0"
-  resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0"
-  integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==
-  dependencies:
-    graceful-fs "^4.2.0"
-    jsonfile "^4.0.0"
-    universalify "^0.1.0"
-
 fs-minipass@^1.2.5:
   version "1.2.7"
   resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7"
@@ -4073,9 +4196,9 @@ fs-minipass@^1.2.5:
     minipass "^2.6.0"
 
 fs-minipass@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.0.0.tgz#a6415edab02fae4b9e9230bc87ee2e4472003cd1"
-  integrity sha512-40Qz+LFXmd9tzYVnnBmZvFfvAADfUA14TXPK1s7IfElJTIZ97rA8w4Kin7Wt5JBrC3ShnnFJO/5vPjPEeJIq9A==
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb"
+  integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==
   dependencies:
     minipass "^3.0.0"
 
@@ -4109,19 +4232,19 @@ fs.realpath@^1.0.0:
   integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
 
 fsevents@^1.2.7:
-  version "1.2.9"
-  resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f"
-  integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==
+  version "1.2.13"
+  resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38"
+  integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==
   dependencies:
+    bindings "^1.5.0"
     nan "^2.12.1"
-    node-pre-gyp "^0.12.0"
 
 fsevents@^2.1.2:
-  version "2.1.2"
-  resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805"
-  integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==
+  version "2.1.3"
+  resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e"
+  integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==
 
-function-bind@^1.0.2, function-bind@^1.1.1:
+function-bind@^1.1.1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
   integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
@@ -4156,9 +4279,9 @@ gensync@^1.0.0-beta.1:
   integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==
 
 gentle-fs@^2.3.0:
-  version "2.3.0"
-  resolved "https://registry.yarnpkg.com/gentle-fs/-/gentle-fs-2.3.0.tgz#13538db5029400f98684be4894e8a7d8f0d1ea7f"
-  integrity sha512-3k2CgAmPxuz7S6nKK+AqFE2AdM1QuwqKLPKzIET3VRwK++3q96MsNFobScDjlCrq97ZJ8y5R725MOlm6ffUCjg==
+  version "2.3.1"
+  resolved "https://registry.yarnpkg.com/gentle-fs/-/gentle-fs-2.3.1.tgz#11201bf66c18f930ddca72cf69460bdfa05727b1"
+  integrity sha512-OlwBBwqCFPcjm33rF2BjW+Pr6/ll2741l+xooiwTCeaX2CA1ZuclavyMBe0/KlR21/XGsgY6hzEQZ15BdNa13Q==
   dependencies:
     aproba "^1.1.2"
     chownr "^1.1.2"
@@ -4238,13 +4361,13 @@ git-log-parser@^1.2.0:
     traverse "~0.6.6"
 
 git-raw-commits@^2.0.0:
-  version "2.0.3"
-  resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.3.tgz#f040e67b8445962d4d168903a9e84c4240c17655"
-  integrity sha512-SoSsFL5lnixVzctGEi2uykjA7B5I0AhO9x6kdzvGRHbxsa6JSEgrgy1esRKsfOKE1cgyOJ/KDR2Trxu157sb8w==
+  version "2.0.7"
+  resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.7.tgz#02e9357727a9755efa8e14dd5e59b381c29068fb"
+  integrity sha512-SkwrTqrDxw8y0G1uGJ9Zw13F7qu3LF8V4BifyDeiJCxSnjRGZD9SaoMiMqUvvXMXh6S3sOQ1DsBN7L2fMUZW/g==
   dependencies:
-    dargs "^4.0.1"
+    dargs "^7.0.0"
     lodash.template "^4.0.2"
-    meow "^5.0.0"
+    meow "^7.0.0"
     split2 "^2.0.0"
     through2 "^3.0.0"
 
@@ -4262,9 +4385,9 @@ glob-parent@^3.1.0:
     path-dirname "^1.0.0"
 
 glob-parent@^5.0.0, glob-parent@^5.1.0:
-  version "5.1.0"
-  resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.0.tgz#5f4c1d1e748d30cd73ad2944b3577a81b081e8c2"
-  integrity sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==
+  version "5.1.1"
+  resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229"
+  integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==
   dependencies:
     is-glob "^4.0.1"
 
@@ -4337,9 +4460,9 @@ globals@^11.1.0:
   integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
 
 globals@^12.1.0:
-  version "12.3.0"
-  resolved "https://registry.yarnpkg.com/globals/-/globals-12.3.0.tgz#1e564ee5c4dded2ab098b0f88f24702a3c56be13"
-  integrity sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==
+  version "12.4.0"
+  resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8"
+  integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==
   dependencies:
     type-fest "^0.8.1"
 
@@ -4411,7 +4534,7 @@ growly@^1.3.0:
   resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
   integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=
 
-handlebars@4.7.6, handlebars@^4.4.0:
+handlebars@4.7.6, handlebars@^4.7.6:
   version "4.7.6"
   resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.6.tgz#d4c05c1baf90e9945f77aa68a7a219aa4a7df74e"
   integrity sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==
@@ -4436,6 +4559,11 @@ har-validator@~5.1.3:
     ajv "^6.5.5"
     har-schema "^2.0.0"
 
+hard-rejection@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883"
+  integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==
+
 has-flag@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
@@ -4487,7 +4615,7 @@ has-values@^1.0.0:
     is-number "^3.0.0"
     kind-of "^4.0.0"
 
-has@^1.0.1, has@^1.0.3:
+has@^1.0.3:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
   integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
@@ -4525,9 +4653,9 @@ hosted-git-info@^2.1.4, hosted-git-info@^2.7.1, hosted-git-info@^2.8.8:
   integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==
 
 hosted-git-info@^3.0.0:
-  version "3.0.2"
-  resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.2.tgz#8b7e3bd114b59b51786f8bade0f39ddc80275a97"
-  integrity sha512-ezZMWtHXm7Eb7Rq4Mwnx2vs79WUx2QmRg3+ZqeGroKzfDO+EprOcgRPYghsOP9JuYBfK18VojmRTGCg8Ma+ktw==
+  version "3.0.4"
+  resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.4.tgz#be4973eb1fd2737b11c9c7c19380739bb249f60d"
+  integrity sha512-4oT62d2jwSDBbLLFLZE+1vPuQ1h8p9wjrJ8Mqx5TjsyWmBMV5B13eJqn8pvluqubLf3cJPTfiYCIwNwDNmzScQ==
   dependencies:
     lru-cache "^5.1.1"
 
@@ -4539,9 +4667,9 @@ html-encoding-sniffer@^2.0.1:
     whatwg-encoding "^1.0.5"
 
 html-escaper@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.0.tgz#71e87f931de3fe09e56661ab9a29aadec707b491"
-  integrity sha512-a4u9BeERWGu/S8JiWEAQcdrg9v4QArtP9keViQjGMdff20fBdd8waotXaNmODqBe6uZ3Nafi7K/ho4gCQHV3Ig==
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453"
+  integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==
 
 http-cache-semantics@^3.8.1:
   version "3.8.1"
@@ -4549,9 +4677,9 @@ http-cache-semantics@^3.8.1:
   integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==
 
 http-cache-semantics@^4.0.0:
-  version "4.0.3"
-  resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz#495704773277eeef6e43f9ab2c2c7d259dda25c5"
-  integrity sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew==
+  version "4.1.0"
+  resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390"
+  integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==
 
 http-proxy-agent@^2.1.0:
   version "2.1.0"
@@ -4623,7 +4751,7 @@ husky@4.2.5:
     slash "^3.0.0"
     which-pm-runs "^1.0.0"
 
-iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13:
+iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@~0.4.13:
   version "0.4.24"
   resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
   integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
@@ -4690,7 +4818,7 @@ import-local@^3.0.2:
     pkg-dir "^4.2.0"
     resolve-cwd "^3.0.0"
 
-imurmurhash@^0.1.4:
+imurmurhash@*, imurmurhash@^0.1.4:
   version "0.1.4"
   resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
   integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
@@ -4718,7 +4846,7 @@ inflight@^1.0.4, inflight@~1.0.6:
     once "^1.3.0"
     wrappy "1"
 
-inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3:
+inherits@2, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3:
   version "2.0.4"
   resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
   integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ -4743,22 +4871,22 @@ init-package-json@^1.10.3:
     validate-npm-package-name "^3.0.0"
 
 inquirer@^7.0.0:
-  version "7.0.0"
-  resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.0.tgz#9e2b032dde77da1db5db804758b8fea3a970519a"
-  integrity sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ==
+  version "7.1.0"
+  resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.1.0.tgz#1298a01859883e17c7264b82870ae1034f92dd29"
+  integrity sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==
   dependencies:
     ansi-escapes "^4.2.1"
-    chalk "^2.4.2"
+    chalk "^3.0.0"
     cli-cursor "^3.1.0"
     cli-width "^2.0.0"
     external-editor "^3.0.3"
     figures "^3.0.0"
     lodash "^4.17.15"
     mute-stream "0.0.8"
-    run-async "^2.2.0"
-    rxjs "^6.4.0"
+    run-async "^2.4.0"
+    rxjs "^6.5.3"
     string-width "^4.1.0"
-    strip-ansi "^5.1.0"
+    strip-ansi "^6.0.0"
     through "^2.3.6"
 
 interpret@^1.0.0:
@@ -4781,6 +4909,11 @@ invariant@^2.2.2, invariant@^2.2.4:
   dependencies:
     loose-envify "^1.0.0"
 
+invert-kv@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
+  integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY=
+
 invert-kv@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02"
@@ -4811,9 +4944,9 @@ is-accessor-descriptor@^1.0.0:
     kind-of "^6.0.0"
 
 is-alphabetical@^1.0.0:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.3.tgz#eb04cc47219a8895d8450ace4715abff2258a1f8"
-  integrity sha512-eEMa6MKpHFzw38eKm56iNNi6GJ7lf6aLLio7Kr23sJPAECscgRtZvOBYybejWDQ2bM949Y++61PY+udzj5QMLA==
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d"
+  integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==
 
 is-alphanumeric@^1.0.0:
   version "1.0.0"
@@ -4821,9 +4954,9 @@ is-alphanumeric@^1.0.0:
   integrity sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ=
 
 is-alphanumerical@^1.0.0:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.3.tgz#57ae21c374277b3defe0274c640a5704b8f6657c"
-  integrity sha512-A1IGAPO5AW9vSh7omxIlOGwIqEvpW/TA+DksVOPM5ODuxKlZS09+TEM1E3275lJqO2oJ38vDpeAL3DCIiHE6eA==
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf"
+  integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==
   dependencies:
     is-alphabetical "^1.0.0"
     is-decimal "^1.0.0"
@@ -4845,10 +4978,10 @@ is-buffer@^1.1.4:
   resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
   integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
 
-is-callable@^1.1.4:
-  version "1.1.4"
-  resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
-  integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==
+is-callable@^1.1.4, is-callable@^1.1.5:
+  version "1.1.5"
+  resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab"
+  integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==
 
 is-ci@^1.0.10:
   version "1.2.1"
@@ -4865,9 +4998,9 @@ is-ci@^2.0.0:
     ci-info "^2.0.0"
 
 is-cidr@^3.0.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/is-cidr/-/is-cidr-3.1.0.tgz#72e233d8e1c4cd1d3f11713fcce3eba7b0e3476f"
-  integrity sha512-3kxTForpuj8O4iHn0ocsn1jxRm5VYm60GDghK6HXmpn4IyZOoRy9/GmdjFA2yEMqw91TB1/K3bFTuI7FlFNR1g==
+  version "3.1.1"
+  resolved "https://registry.yarnpkg.com/is-cidr/-/is-cidr-3.1.1.tgz#e92ef121bdec2782271a77ce487a8b8df3718ab7"
+  integrity sha512-Gx+oErgq1j2jAKCR2Kbq0b3wbH0vQKqZ0wOlHxm0o56nq51Cs/DZA8oz9dMDhbHyHEGgJ86eTeVudtgMMOx3Mw==
   dependencies:
     cidr-regex "^2.0.10"
 
@@ -4886,14 +5019,14 @@ is-data-descriptor@^1.0.0:
     kind-of "^6.0.0"
 
 is-date-object@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
-  integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e"
+  integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==
 
 is-decimal@^1.0.0:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.3.tgz#381068759b9dc807d8c0dc0bfbae2b68e1da48b7"
-  integrity sha512-bvLSwoDg2q6Gf+E2LEPiklHZxxiSi3XAh4Mav65mKqTfCO1HM3uBs24TjEH8iJX3bbDdLXKJXBTmGzuTUuAEjQ==
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5"
+  integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==
 
 is-descriptor@^0.1.0:
   version "0.1.6"
@@ -4913,6 +5046,11 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2:
     is-data-descriptor "^1.0.0"
     kind-of "^6.0.2"
 
+is-docker@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.0.0.tgz#2cb0df0e75e2d064fe1864c37cdeacb7b2dcf25b"
+  integrity sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ==
+
 is-extendable@^0.1.0, is-extendable@^0.1.1:
   version "0.1.1"
   resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
@@ -4967,9 +5105,9 @@ is-glob@^4.0.0, is-glob@^4.0.1:
     is-extglob "^2.1.1"
 
 is-hexadecimal@^1.0.0:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.3.tgz#e8a426a69b6d31470d3a33a47bb825cda02506ee"
-  integrity sha512-zxQ9//Q3D/34poZf8fiy3m3XVpbQc7ren15iKqrTtLPwkPD/t3Scy9Imp63FujULGxuK0ZlCwoo5xNpktFgbOA==
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7"
+  integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==
 
 is-installed-globally@^0.1.0:
   version "0.1.0"
@@ -5032,22 +5170,17 @@ is-potential-custom-element-name@^1.0.0:
   resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397"
   integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c=
 
-is-promise@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
-  integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=
-
 is-redirect@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24"
   integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=
 
-is-regex@^1.0.4:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
-  integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=
+is-regex@^1.0.5:
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae"
+  integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==
   dependencies:
-    has "^1.0.1"
+    has "^1.0.3"
 
 is-retry-allowed@^1.0.0:
   version "1.2.0"
@@ -5064,6 +5197,11 @@ is-stream@^2.0.0:
   resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3"
   integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==
 
+is-string@^1.0.5:
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6"
+  integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==
+
 is-symbol@^1.0.2:
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937"
@@ -5084,9 +5222,9 @@ is-typedarray@^1.0.0, is-typedarray@~1.0.0:
   integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
 
 is-whitespace-character@^1.0.0:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.3.tgz#b3ad9546d916d7d3ffa78204bca0c26b56257fac"
-  integrity sha512-SNPgMLz9JzPccD3nPctcj8sZlX9DAMJSKH8bP7Z6bohCwuNgX8xbWr1eTAYXX9Vpi/aSn8Y1akL9WgM3t43YNQ==
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7"
+  integrity sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==
 
 is-windows@^1.0.1, is-windows@^1.0.2:
   version "1.0.2"
@@ -5094,14 +5232,16 @@ is-windows@^1.0.1, is-windows@^1.0.2:
   integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
 
 is-word-character@^1.0.0:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.3.tgz#264d15541cbad0ba833d3992c34e6b40873b08aa"
-  integrity sha512-0wfcrFgOOOBdgRNT9H33xe6Zi6yhX/uoc4U8NBZGeQQB0ctU1dnlNTyL9JM2646bHDTpsDm1Brb3VPoCIMrd/A==
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230"
+  integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==
 
 is-wsl@^2.1.1:
-  version "2.1.1"
-  resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.1.1.tgz#4a1c152d429df3d441669498e2486d3596ebaf1d"
-  integrity sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog==
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
+  integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
+  dependencies:
+    is-docker "^2.0.0"
 
 isarray@0.0.1:
   version "0.0.1"
@@ -5157,14 +5297,11 @@ istanbul-lib-coverage@^3.0.0:
   integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==
 
 istanbul-lib-instrument@^4.0.0:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz#61f13ac2c96cfefb076fe7131156cc05907874e6"
-  integrity sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg==
+  version "4.0.3"
+  resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d"
+  integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==
   dependencies:
     "@babel/core" "^7.7.5"
-    "@babel/parser" "^7.7.5"
-    "@babel/template" "^7.7.4"
-    "@babel/traverse" "^7.7.4"
     "@istanbuljs/schema" "^0.1.2"
     istanbul-lib-coverage "^3.0.0"
     semver "^6.3.0"
@@ -5276,6 +5413,16 @@ jest-config@^26.0.1:
     micromatch "^4.0.2"
     pretty-format "^26.0.1"
 
+jest-diff@^24.9.0:
+  version "24.9.0"
+  resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da"
+  integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==
+  dependencies:
+    chalk "^2.0.1"
+    diff-sequences "^24.9.0"
+    jest-get-type "^24.9.0"
+    pretty-format "^24.9.0"
+
 jest-diff@^25.2.1:
   version "25.5.0"
   resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.5.0.tgz#1dd26ed64f96667c068cef026b677dfa01afcfa9"
@@ -5337,6 +5484,25 @@ jest-environment-node@^26.0.1:
     jest-mock "^26.0.1"
     jest-util "^26.0.1"
 
+jest-extended@0.11.5:
+  version "0.11.5"
+  resolved "https://registry.yarnpkg.com/jest-extended/-/jest-extended-0.11.5.tgz#f063b3f1eaadad8d7c13a01f0dfe0f538d498ccf"
+  integrity sha512-3RsdFpLWKScpsLD6hJuyr/tV5iFOrw7v6YjA3tPdda9sJwoHwcMROws5gwiIZfcwhHlJRwFJB2OUvGmF3evV/Q==
+  dependencies:
+    expect "^24.1.0"
+    jest-get-type "^22.4.3"
+    jest-matcher-utils "^22.0.0"
+
+jest-get-type@^22.4.3:
+  version "22.4.3"
+  resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4"
+  integrity sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==
+
+jest-get-type@^24.9.0:
+  version "24.9.0"
+  resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e"
+  integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==
+
 jest-get-type@^25.2.6:
   version "25.2.6"
   resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877"
@@ -5409,6 +5575,25 @@ jest-leak-detector@^26.0.1:
     jest-get-type "^26.0.0"
     pretty-format "^26.0.1"
 
+jest-matcher-utils@^22.0.0:
+  version "22.4.3"
+  resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-22.4.3.tgz#4632fe428ebc73ebc194d3c7b65d37b161f710ff"
+  integrity sha512-lsEHVaTnKzdAPR5t4B6OcxXo9Vy4K+kRRbG5gtddY8lBEC+Mlpvm1CJcsMESRjzUhzkz568exMV1hTB76nAKbA==
+  dependencies:
+    chalk "^2.0.1"
+    jest-get-type "^22.4.3"
+    pretty-format "^22.4.3"
+
+jest-matcher-utils@^24.9.0:
+  version "24.9.0"
+  resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073"
+  integrity sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==
+  dependencies:
+    chalk "^2.0.1"
+    jest-diff "^24.9.0"
+    jest-get-type "^24.9.0"
+    pretty-format "^24.9.0"
+
 jest-matcher-utils@^26.0.1:
   version "26.0.1"
   resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.0.1.tgz#12e1fc386fe4f14678f4cc8dbd5ba75a58092911"
@@ -5419,6 +5604,20 @@ jest-matcher-utils@^26.0.1:
     jest-get-type "^26.0.0"
     pretty-format "^26.0.1"
 
+jest-message-util@^24.9.0:
+  version "24.9.0"
+  resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3"
+  integrity sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==
+  dependencies:
+    "@babel/code-frame" "^7.0.0"
+    "@jest/test-result" "^24.9.0"
+    "@jest/types" "^24.9.0"
+    "@types/stack-utils" "^1.0.1"
+    chalk "^2.0.1"
+    micromatch "^3.1.10"
+    slash "^2.0.0"
+    stack-utils "^1.0.1"
+
 jest-message-util@^26.0.1:
   version "26.0.1"
   resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.0.1.tgz#07af1b42fc450b4cc8e90e4c9cef11b33ce9b0ac"
@@ -5452,6 +5651,11 @@ jest-pnp-resolver@^1.2.1:
   resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a"
   integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==
 
+jest-regex-util@^24.9.0:
+  version "24.9.0"
+  resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636"
+  integrity sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==
+
 jest-regex-util@^26.0.0:
   version "26.0.0"
   resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28"
@@ -5739,13 +5943,6 @@ json5@2.1.3, json5@^2.1.2:
   dependencies:
     minimist "^1.2.5"
 
-jsonfile@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
-  integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=
-  optionalDependencies:
-    graceful-fs "^4.1.6"
-
 jsonfile@^6.0.1:
   version "6.0.1"
   resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179"
@@ -5771,9 +5968,9 @@ jsprim@^1.2.2:
     verror "1.10.0"
 
 just-extend@^4.0.2:
-  version "4.0.2"
-  resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-4.0.2.tgz#f3f47f7dfca0f989c55410a7ebc8854b07108afc"
-  integrity sha512-FrLwOgm+iXrPV+5zDU6Jqu4gCRXbWEQg2O3SKONsWE4w7AXFRkryS53bpWdaL9cNol+AmR3AEYz6kn+o0fCPnw==
+  version "4.1.0"
+  resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-4.1.0.tgz#7278a4027d889601640ee0ce0e5a00b992467da4"
+  integrity sha512-ApcjaOdVTJ7y4r08xI5wIqpvwS48Q0PBG4DJROcEkH1f8MdAiNFyFxz3xoL0LWAVwjrwPYZdVHHxhRHcx/uGLA==
 
 keyv@^3.0.0:
   version "3.1.0"
@@ -5782,7 +5979,7 @@ keyv@^3.0.0:
   dependencies:
     json-buffer "3.0.0"
 
-kind-of@>=6.0.3, kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0, kind-of@^4.0.0, kind-of@^5.0.0, kind-of@^6.0.0, kind-of@^6.0.2:
+kind-of@>=6.0.3, kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0, kind-of@^4.0.0, kind-of@^5.0.0, kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3:
   version "6.0.3"
   resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
   integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
@@ -5809,6 +6006,13 @@ lazy-property@~1.0.0:
   resolved "https://registry.yarnpkg.com/lazy-property/-/lazy-property-1.0.0.tgz#84ddc4b370679ba8bd4cdcfa4c06b43d57111147"
   integrity sha1-hN3Es3Bnm6i9TNz6TAa0PVcREUc=
 
+lcid@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
+  integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=
+  dependencies:
+    invert-kv "^1.0.0"
+
 lcid@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf"
@@ -5837,9 +6041,9 @@ levn@^0.3.0, levn@~0.3.0:
     type-check "~0.3.2"
 
 libcipm@^4.0.7:
-  version "4.0.7"
-  resolved "https://registry.yarnpkg.com/libcipm/-/libcipm-4.0.7.tgz#76cd675c98bdaae64db88b782b01b804b6d02c8a"
-  integrity sha512-fTq33otU3PNXxxCTCYCYe7V96o59v/o7bvtspmbORXpgFk+wcWrGf5x6tBgui5gCed/45/wtPomBsZBYm5KbIw==
+  version "4.0.8"
+  resolved "https://registry.yarnpkg.com/libcipm/-/libcipm-4.0.8.tgz#dcea4919e10dfbce420327e63901613b9141bc89"
+  integrity sha512-IN3hh2yDJQtZZ5paSV4fbvJg4aHxCCg5tcZID/dSVlTuUiWktsgaldVljJv6Z5OUlYspx6xQkbR0efNodnIrOA==
   dependencies:
     bin-links "^1.1.2"
     bluebird "^3.5.1"
@@ -5847,7 +6051,7 @@ libcipm@^4.0.7:
     find-npm-prefix "^1.0.2"
     graceful-fs "^4.1.11"
     ini "^1.3.5"
-    lock-verify "^2.0.2"
+    lock-verify "^2.1.0"
     mkdirp "^0.5.1"
     npm-lifecycle "^3.0.0"
     npm-logical-tree "^1.2.1"
@@ -5957,9 +6161,9 @@ libnpmteam@^1.0.2:
     npm-registry-fetch "^4.0.0"
 
 libnpx@^10.2.2:
-  version "10.2.2"
-  resolved "https://registry.yarnpkg.com/libnpx/-/libnpx-10.2.2.tgz#5a4171b9b92dd031463ef66a4af9f5cbd6b09572"
-  integrity sha512-ujaYToga1SAX5r7FU5ShMFi88CWpY75meNZtr6RtEyv4l2ZK3+Wgvxq2IqlwWBiDZOqhumdeiocPS1aKrCMe3A==
+  version "10.2.3"
+  resolved "https://registry.yarnpkg.com/libnpx/-/libnpx-10.2.3.tgz#d5e01f12d383ffca9a947807ca6a8f587d38fe2c"
+  integrity sha512-bCvdARu55fLQBhMfcYGF0GznF1kB2sqxq/9zKZ3652M8DDFWpVpCnpgzjzn0yWMDMez5ZGMBiX24yR11uEYZVQ==
   dependencies:
     dotenv "^5.0.1"
     npm-package-arg "^6.0.0"
@@ -6040,10 +6244,11 @@ locate-path@^5.0.0:
     p-locate "^4.1.0"
 
 lock-verify@^2.0.2, lock-verify@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/lock-verify/-/lock-verify-2.1.0.tgz#fff4c918b8db9497af0c5fa7f6d71555de3ceb47"
-  integrity sha512-vcLpxnGvrqisKvLQ2C2v0/u7LVly17ak2YSgoK4PrdsYBXQIax19vhKiLfvKNFx7FRrpTnitrpzF/uuCMuorIg==
+  version "2.2.0"
+  resolved "https://registry.yarnpkg.com/lock-verify/-/lock-verify-2.2.0.tgz#12432feb68bb647071c78c44bde16029a0f7d935"
+  integrity sha512-BhM1Vqsu7x0s+EalTifNjdDPks+ZjdAhComvnA6VcCIlDOI5ouELXqAe1BYuEIP4zGN0W08xVm6byJV1LnCiJg==
   dependencies:
+    "@iarna/cli" "^1.2.0"
     npm-package-arg "^6.1.0"
     semver "^5.4.1"
 
@@ -6054,6 +6259,11 @@ lockfile@^1.0.4:
   dependencies:
     signal-exit "^3.0.2"
 
+lodash._baseindexof@*:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/lodash._baseindexof/-/lodash._baseindexof-3.1.0.tgz#fe52b53a1c6761e42618d654e4a25789ed61822c"
+  integrity sha1-/lK1OhxnYeQmGNZU5KJXie1hgiw=
+
 lodash._baseuniq@~4.6.0:
   version "4.6.0"
   resolved "https://registry.yarnpkg.com/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz#0ebb44e456814af7905c6212fa2c9b2d51b841e8"
@@ -6062,11 +6272,33 @@ lodash._baseuniq@~4.6.0:
     lodash._createset "~4.0.0"
     lodash._root "~3.0.0"
 
+lodash._bindcallback@*:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e"
+  integrity sha1-5THCdkTPi1epnhftlbNcdIeJOS4=
+
+lodash._cacheindexof@*:
+  version "3.0.2"
+  resolved "https://registry.yarnpkg.com/lodash._cacheindexof/-/lodash._cacheindexof-3.0.2.tgz#3dc69ac82498d2ee5e3ce56091bafd2adc7bde92"
+  integrity sha1-PcaayCSY0u5ePOVgkbr9Ktx73pI=
+
+lodash._createcache@*:
+  version "3.1.2"
+  resolved "https://registry.yarnpkg.com/lodash._createcache/-/lodash._createcache-3.1.2.tgz#56d6a064017625e79ebca6b8018e17440bdcf093"
+  integrity sha1-VtagZAF2JeeevKa4AY4XRAvc8JM=
+  dependencies:
+    lodash._getnative "^3.0.0"
+
 lodash._createset@~4.0.0:
   version "4.0.3"
   resolved "https://registry.yarnpkg.com/lodash._createset/-/lodash._createset-4.0.3.tgz#0f4659fbb09d75194fa9e2b88a6644d363c9fe26"
   integrity sha1-D0ZZ+7CddRlPqeK4imZE02PJ/iY=
 
+lodash._getnative@*, lodash._getnative@^3.0.0:
+  version "3.9.1"
+  resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5"
+  integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=
+
 lodash._reinterpolate@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
@@ -6112,6 +6344,11 @@ lodash.isstring@^4.0.1:
   resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451"
   integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=
 
+lodash.restparam@*:
+  version "3.6.1"
+  resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805"
+  integrity sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=
+
 lodash.sortby@^4.7.0:
   version "4.7.0"
   resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
@@ -6163,9 +6400,9 @@ lodash@4.17.15, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.
   integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
 
 longest-streak@^2.0.1:
-  version "2.0.3"
-  resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.3.tgz#3de7a3f47ee18e9074ded8575b5c091f5d0a4105"
-  integrity sha512-9lz5IVdpwsKLMzQi0MQ+oD9EA0mIGcWYP7jXMTZVXP8D42PwuAk+M/HBFYQoxt1G5OR8m7aSIgb1UymfWGBWEw==
+  version "2.0.4"
+  resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4"
+  integrity sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==
 
 loose-envify@^1.0.0:
   version "1.4.0"
@@ -6233,9 +6470,9 @@ make-dir@^2.0.0, make-dir@^2.1.0:
     semver "^5.6.0"
 
 make-dir@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.0.tgz#1b5f39f6b9270ed33f9f054c5c0f84304989f801"
-  integrity sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
+  integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
   dependencies:
     semver "^6.0.0"
 
@@ -6285,6 +6522,11 @@ map-obj@^2.0.0:
   resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9"
   integrity sha1-plzSkIepJZi4eRJXpSPgISIqwfk=
 
+map-obj@^4.0.0:
+  version "4.1.0"
+  resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.1.0.tgz#b91221b542734b9f14256c0132c897c5d7256fd5"
+  integrity sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g==
+
 map-visit@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
@@ -6293,9 +6535,9 @@ map-visit@^1.0.0:
     object-visit "^1.0.0"
 
 markdown-escapes@^1.0.0:
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.3.tgz#6155e10416efaafab665d466ce598216375195f5"
-  integrity sha512-XUi5HJhhV5R74k8/0H2oCbCiYf/u4cO/rX8tnGkRvrqhsr5BRNU6Mg0yt/8UIx1iIS8220BNJsDb7XnILhLepw==
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535"
+  integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==
 
 markdown-it@10.0.0:
   version "10.0.0"
@@ -6314,21 +6556,21 @@ markdown-table@1.1.3, markdown-table@^1.1.0:
   integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==
 
 marked-terminal@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/marked-terminal/-/marked-terminal-4.0.0.tgz#2c7aa2c0eec496f05cd61f768d80d35db0bf6a86"
-  integrity sha512-mzU3VD7aVz12FfGoKFAceijehA6Ocjfg3rVimvJbFAB/NOYCsuzRVtq3PSFdPmWI5mhdGeEh3/aMJ5DSxAz94Q==
+  version "4.1.0"
+  resolved "https://registry.yarnpkg.com/marked-terminal/-/marked-terminal-4.1.0.tgz#01087372d3636dc7cb286475a1d6147187f500e0"
+  integrity sha512-5KllfAOW02WS6hLRQ7cNvGOxvKW1BKuXELH4EtbWfyWgxQhROoMxEvuQ/3fTgkNjledR0J48F4HbapvYp1zWkQ==
   dependencies:
-    ansi-escapes "^4.3.0"
+    ansi-escapes "^4.3.1"
     cardinal "^2.1.1"
-    chalk "^3.0.0"
+    chalk "^4.0.0"
     cli-table "^0.3.1"
     node-emoji "^1.10.0"
-    supports-hyperlinks "^2.0.0"
+    supports-hyperlinks "^2.1.0"
 
 marked@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/marked/-/marked-1.0.0.tgz#d35784245a04871e5988a491e28867362e941693"
-  integrity sha512-Wo+L1pWTVibfrSr+TTtMuiMfNzmZWiOPeO7rZsQUY5bgsxpHesBEcIWJloWVTFnrMXnf/TL30eTFSGJddmQAng==
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/marked/-/marked-1.1.0.tgz#62504ad4d11550c942935ccc5e39d64e5a4c4e50"
+  integrity sha512-EkE7RW6KcXfMHy2PA7Jg0YJE1l8UPEZE8k45tylzmZM30/r1M1MUXWQfJlrSbsTeh7m/XTwHbWUENvAJZpp1YA==
 
 matcher@^2.1.0:
   version "2.1.0"
@@ -6345,9 +6587,9 @@ mdast-util-compact@^1.0.0:
     unist-util-visit "^1.1.0"
 
 mdast-util-to-string@^1.0.1:
-  version "1.0.7"
-  resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-1.0.7.tgz#62d8e9c6b2113070d8b497c7dc35bf12796f06ee"
-  integrity sha512-P+gdtssCoHOX+eJUrrC30Sixqao86ZPlVjR5NEAoy0U79Pfxb1Y0Gntei0+GrnQD4T04X9xA8tcugp90cSmNow==
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz#27055500103f51637bd07d01da01eb1967a43527"
+  integrity sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==
 
 mdurl@^1.0.1:
   version "1.0.1"
@@ -6359,6 +6601,13 @@ meant@~1.0.1:
   resolved "https://registry.yarnpkg.com/meant/-/meant-1.0.1.tgz#66044fea2f23230ec806fb515efea29c44d2115d"
   integrity sha512-UakVLFjKkbbUwNWJ2frVLnnAtbb7D7DsloxRd3s/gDpI8rdv8W5Hp3NaDb+POBI1fQdeussER6NB8vpcRURvlg==
 
+mem@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76"
+  integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=
+  dependencies:
+    mimic-fn "^1.0.0"
+
 mem@^4.0.0:
   version "4.3.0"
   resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178"
@@ -6403,6 +6652,25 @@ meow@^5.0.0:
     trim-newlines "^2.0.0"
     yargs-parser "^10.0.0"
 
+meow@^7.0.0:
+  version "7.0.1"
+  resolved "https://registry.yarnpkg.com/meow/-/meow-7.0.1.tgz#1ed4a0a50b3844b451369c48362eb0515f04c1dc"
+  integrity sha512-tBKIQqVrAHqwit0vfuFPY3LlzJYkEOFyKa3bPgxzNl6q/RtN8KQ+ALYEASYuFayzSAsjlhXj/JZ10rH85Q6TUw==
+  dependencies:
+    "@types/minimist" "^1.2.0"
+    arrify "^2.0.1"
+    camelcase "^6.0.0"
+    camelcase-keys "^6.2.2"
+    decamelize-keys "^1.1.0"
+    hard-rejection "^2.1.0"
+    minimist-options "^4.0.2"
+    normalize-package-data "^2.5.0"
+    read-pkg-up "^7.0.1"
+    redent "^3.0.0"
+    trim-newlines "^3.0.0"
+    type-fest "^0.13.1"
+    yargs-parser "^18.1.3"
+
 merge-stream@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
@@ -6440,22 +6708,27 @@ micromatch@^4.0.2:
     braces "^3.0.1"
     picomatch "^2.0.5"
 
-mime-db@1.42.0:
-  version "1.42.0"
-  resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.42.0.tgz#3e252907b4c7adb906597b4b65636272cf9e7bac"
-  integrity sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==
+mime-db@1.44.0:
+  version "1.44.0"
+  resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92"
+  integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==
 
 mime-types@^2.1.12, mime-types@^2.1.18, mime-types@~2.1.19:
-  version "2.1.25"
-  resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.25.tgz#39772d46621f93e2a80a856c53b86a62156a6437"
-  integrity sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==
+  version "2.1.27"
+  resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f"
+  integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==
   dependencies:
-    mime-db "1.42.0"
+    mime-db "1.44.0"
 
 mime@^2.4.3:
-  version "2.4.4"
-  resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5"
-  integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==
+  version "2.4.5"
+  resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.5.tgz#d8de2ecb92982dedbb6541c9b6841d7f218ea009"
+  integrity sha512-3hQhEUF027BuxZjQA3s7rIv/7VCQPa27hN9u9g87sEkWaKwQPuXOkVKtOeiyUrnWqTDiOs8Ed2rwg733mB0R5w==
+
+mimic-fn@^1.0.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
+  integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==
 
 mimic-fn@^2.0.0, mimic-fn@^2.1.0:
   version "2.1.0"
@@ -6467,6 +6740,11 @@ mimic-response@^1.0.0, mimic-response@^1.0.1:
   resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
   integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==
 
+min-indent@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.0.tgz#cfc45c37e9ec0d8f0a0ec3dd4ef7f7c3abe39256"
+  integrity sha1-z8RcN+nsDY8KDsPdTvf3w6vjklY=
+
 "minimatch@2 || 3", minimatch@3.0.4, minimatch@^3.0.4:
   version "3.0.4"
   resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
@@ -6482,6 +6760,15 @@ minimist-options@^3.0.1:
     arrify "^1.0.1"
     is-plain-obj "^1.1.0"
 
+minimist-options@^4.0.2:
+  version "4.1.0"
+  resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619"
+  integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==
+  dependencies:
+    arrify "^1.0.1"
+    is-plain-obj "^1.1.0"
+    kind-of "^6.0.3"
+
 minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5:
   version "1.2.5"
   resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
@@ -6502,9 +6789,9 @@ minipass-flush@^1.0.5:
     minipass "^3.0.0"
 
 minipass-pipeline@^1.2.2:
-  version "1.2.2"
-  resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz#3dcb6bb4a546e32969c7ad710f2c79a86abba93a"
-  integrity sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA==
+  version "1.2.3"
+  resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.3.tgz#55f7839307d74859d6e8ada9c3ebe72cec216a34"
+  integrity sha512-cFOknTvng5vqnwOpDsZTWhNll6Jf8o2x+/diplafmxpuIymAjzoOolZG0VvQf3V2HgqzJNhnuKHYp2BqDgz8IQ==
   dependencies:
     minipass "^3.0.0"
 
@@ -6517,9 +6804,9 @@ minipass@^2.3.5, minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0:
     yallist "^3.0.0"
 
 minipass@^3.0.0, minipass@^3.1.1:
-  version "3.1.1"
-  resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.1.tgz#7607ce778472a185ad6d89082aa2070f79cedcd5"
-  integrity sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w==
+  version "3.1.3"
+  resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd"
+  integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==
   dependencies:
     yallist "^4.0.0"
 
@@ -6616,9 +6903,9 @@ move-file@^2.0.0:
     path-exists "^4.0.0"
 
 mri@^1.1.4:
-  version "1.1.4"
-  resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.4.tgz#7cb1dd1b9b40905f1fac053abe25b6720f44744a"
-  integrity sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w==
+  version "1.1.5"
+  resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.5.tgz#ce21dba2c69f74a9b7cf8a1ec62307e089e223e0"
+  integrity sha512-d2RKzMD4JNyHMbnbWnznPaa8vbdlq/4pNZ3IgdaGrVbBhebBsGUUE/6qorTMYNS6TwuH3ilfOlD2bf4Igh8CKg==
 
 ms@2.0.0:
   version "2.0.0"
@@ -6692,15 +6979,6 @@ ncp@~2.0.0:
   resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3"
   integrity sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=
 
-needle@^2.2.1:
-  version "2.4.0"
-  resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c"
-  integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==
-  dependencies:
-    debug "^3.2.6"
-    iconv-lite "^0.4.4"
-    sax "^1.2.4"
-
 neo-async@^2.6.0:
   version "2.6.1"
   resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c"
@@ -6753,9 +7031,9 @@ node-environment-flags@^1.0.5:
     semver "^5.7.0"
 
 node-fetch-npm@^2.0.2:
-  version "2.0.2"
-  resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz#7258c9046182dca345b4208eda918daf33697ff7"
-  integrity sha512-nJIxm1QmAj4v3nfCvEeCrYSoVwXyxLnaPBK5W1W5DGEJwjlKuC2VEUycGw5oxk+4zZahRrB84PUJJgEmhFTDFw==
+  version "2.0.4"
+  resolved "https://registry.yarnpkg.com/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz#6507d0e17a9ec0be3bec516958a497cec54bf5a4"
+  integrity sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg==
   dependencies:
     encoding "^0.1.11"
     json-parse-better-errors "^1.0.0"
@@ -6812,26 +7090,10 @@ node-notifier@^7.0.0:
     uuid "^7.0.3"
     which "^2.0.2"
 
-node-pre-gyp@^0.12.0:
-  version "0.12.0"
-  resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149"
-  integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A==
-  dependencies:
-    detect-libc "^1.0.2"
-    mkdirp "^0.5.1"
-    needle "^2.2.1"
-    nopt "^4.0.1"
-    npm-packlist "^1.1.6"
-    npmlog "^4.0.2"
-    rc "^1.2.7"
-    rimraf "^2.6.1"
-    semver "^5.3.0"
-    tar "^4"
-
 node-releases@^1.1.53:
-  version "1.1.53"
-  resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.53.tgz#2d821bfa499ed7c5dffc5e2f28c88e78a08ee3f4"
-  integrity sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==
+  version "1.1.55"
+  resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.55.tgz#8af23b7c561d8e2e6e36a46637bab84633b07cee"
+  integrity sha512-H3R3YR/8TjT5WPin/wOoHOUPHgvj8leuU/Keta/rwelEQN9pA/S2Dx8/se4pZ2LBxSd0nAGzsNzhqwa77v7F1w==
 
 nopt@^4.0.1, nopt@^4.0.3:
   version "4.0.3"
@@ -6874,17 +7136,19 @@ normalize-url@^5.0.0:
   integrity sha512-bAEm2fx8Dq/a35Z6PIRkkBBJvR56BbEJvhpNtvCZ4W9FyORSna77fn+xtYFjqk5JpBS+fMnAOG/wFgkQBmB7hw==
 
 npm-audit-report@^1.3.2:
-  version "1.3.2"
-  resolved "https://registry.yarnpkg.com/npm-audit-report/-/npm-audit-report-1.3.2.tgz#303bc78cd9e4c226415076a4f7e528c89fc77018"
-  integrity sha512-abeqS5ONyXNaZJPGAf6TOUMNdSe1Y6cpc9MLBRn+CuUoYbfdca6AxOyXVlfIv9OgKX+cacblbG5w7A6ccwoTPw==
+  version "1.3.3"
+  resolved "https://registry.yarnpkg.com/npm-audit-report/-/npm-audit-report-1.3.3.tgz#8226deeb253b55176ed147592a3995442f2179ed"
+  integrity sha512-8nH/JjsFfAWMvn474HB9mpmMjrnKb1Hx/oTAdjv4PT9iZBvBxiZ+wtDUapHCJwLqYGQVPaAfs+vL5+5k9QndXw==
   dependencies:
     cli-table3 "^0.5.0"
     console-control-strings "^1.1.0"
 
 npm-bundled@^1.0.1:
-  version "1.0.6"
-  resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd"
-  integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b"
+  integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==
+  dependencies:
+    npm-normalize-package-bin "^1.0.1"
 
 npm-cache-filename@~1.0.2:
   version "1.0.2"
@@ -6899,9 +7163,9 @@ npm-install-checks@^3.0.2:
     semver "^2.3.0 || 3.x || 4 || 5"
 
 npm-lifecycle@^3.0.0, npm-lifecycle@^3.1.4:
-  version "3.1.4"
-  resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-3.1.4.tgz#de6975c7d8df65f5150db110b57cce498b0b604c"
-  integrity sha512-tgs1PaucZwkxECGKhC/stbEgFyc3TGh2TJcg2CDr6jbvQRdteHNhmMeljRzpe4wgFAXQADoy1cSqqi7mtiAa5A==
+  version "3.1.5"
+  resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-3.1.5.tgz#9882d3642b8c82c815782a12e6a1bfeed0026309"
+  integrity sha512-lDLVkjfZmvmfvpvBzA4vzee9cn+Me4orq0QF8glbswJVEbIcSNWib7qGOffolysc3teCqbbPZZkzbr3GQZTL1g==
   dependencies:
     byline "^5.0.0"
     graceful-fs "^4.1.15"
@@ -6932,7 +7196,7 @@ npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1:
     semver "^5.6.0"
     validate-npm-package-name "^3.0.0"
 
-npm-packlist@^1.1.12, npm-packlist@^1.1.6, npm-packlist@^1.4.8:
+npm-packlist@^1.1.12, npm-packlist@^1.4.8:
   version "1.4.8"
   resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e"
   integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==
@@ -7002,9 +7266,9 @@ npm-run-path@^3.0.0:
     path-key "^3.0.0"
 
 npm-run-path@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.0.tgz#d644ec1bd0569187d2a52909971023a0a58e8438"
-  integrity sha512-8eyAOAH+bYXFPSnNnKr3J+yoybe8O87Is5rtAQ8qRczJz1ajcsjg8l2oZqP+Ppx15Ii3S1vUTjQN2h4YO2tWWQ==
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
+  integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
   dependencies:
     path-key "^3.0.0"
 
@@ -7134,7 +7398,7 @@ npm@6.14.5, npm@^6.10.3:
     worker-farm "^1.7.0"
     write-file-atomic "^2.4.3"
 
-npmlog@^4.0.2, npmlog@^4.1.2, npmlog@~4.1.2:
+npmlog@^4.1.2, npmlog@~4.1.2:
   version "4.1.2"
   resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
   integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
@@ -7200,23 +7464,23 @@ object.assign@^4.1.0:
     has-symbols "^1.0.0"
     object-keys "^1.0.11"
 
-object.entries@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.0.tgz#2024fc6d6ba246aee38bdb0ffd5cfbcf371b7519"
-  integrity sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==
+object.entries@^1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.1.tgz#ee1cf04153de02bb093fec33683900f57ce5399b"
+  integrity sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ==
   dependencies:
     define-properties "^1.1.3"
-    es-abstract "^1.12.0"
+    es-abstract "^1.17.0-next.1"
     function-bind "^1.1.1"
     has "^1.0.3"
 
 object.getownpropertydescriptors@^2.0.3:
-  version "2.0.3"
-  resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16"
-  integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649"
+  integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==
   dependencies:
-    define-properties "^1.1.2"
-    es-abstract "^1.5.1"
+    define-properties "^1.1.3"
+    es-abstract "^1.17.0-next.1"
 
 object.pick@^1.3.0:
   version "1.3.0"
@@ -7226,12 +7490,12 @@ object.pick@^1.3.0:
     isobject "^3.0.1"
 
 object.values@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9"
-  integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e"
+  integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==
   dependencies:
     define-properties "^1.1.3"
-    es-abstract "^1.12.0"
+    es-abstract "^1.17.0-next.1"
     function-bind "^1.1.1"
     has "^1.0.3"
 
@@ -7276,6 +7540,15 @@ os-homedir@^1.0.0:
   resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
   integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
 
+os-locale@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2"
+  integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==
+  dependencies:
+    execa "^0.7.0"
+    lcid "^1.0.0"
+    mem "^1.1.0"
+
 os-locale@^3.1.0:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a"
@@ -7363,9 +7636,9 @@ p-limit@^1.1.0:
     p-try "^1.0.0"
 
 p-limit@^2.0.0, p-limit@^2.2.0:
-  version "2.2.1"
-  resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537"
-  integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==
+  version "2.3.0"
+  resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
+  integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
   dependencies:
     p-try "^2.0.0"
 
@@ -7582,9 +7855,9 @@ path-key@^2.0.0, path-key@^2.0.1:
   integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
 
 path-key@^3.0.0, path-key@^3.1.0:
-  version "3.1.0"
-  resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.0.tgz#99a10d870a803bdd5ee6f0470e58dfcd2f9a54d3"
-  integrity sha512-8cChqz0RP6SHJkMt48FW0A7+qUOn+OsnOsVtzI59tZ8m+5bCSk7hzwET0pulwOM2YMn9J1efb07KB9l9f30SGg==
+  version "3.1.1"
+  resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
+  integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
 
 path-parse@^1.0.6:
   version "1.0.6"
@@ -7623,14 +7896,14 @@ performance-now@^2.1.0:
   integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
 
 picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1:
-  version "2.2.1"
-  resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a"
-  integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA==
+  version "2.2.2"
+  resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
+  integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
 
 pidtree@^0.3.0:
-  version "0.3.0"
-  resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.0.tgz#f6fada10fccc9f99bf50e90d0b23d72c9ebc2e6b"
-  integrity sha512-9CT4NFlDcosssyg8KVFltgokyKZIFjoBxw8CTGy+5F38Y1eQWrt8tRayiUOXE+zVKQnYu5BR8JjCtvK3BcnBhg==
+  version "0.3.1"
+  resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a"
+  integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==
 
 pify@^2.0.0:
   version "2.3.0"
@@ -7727,6 +8000,24 @@ prettier@2.0.5:
   resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.5.tgz#d6d56282455243f2f92cc1716692c08aa31522d4"
   integrity sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==
 
+pretty-format@^22.4.3:
+  version "22.4.3"
+  resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-22.4.3.tgz#f873d780839a9c02e9664c8a082e9ee79eaac16f"
+  integrity sha512-S4oT9/sT6MN7/3COoOy+ZJeA92VmOnveLHgrwBE3Z1W5N9S2A1QGNYiE1z75DAENbJrXXUb+OWXhpJcg05QKQQ==
+  dependencies:
+    ansi-regex "^3.0.0"
+    ansi-styles "^3.2.0"
+
+pretty-format@^24.9.0:
+  version "24.9.0"
+  resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9"
+  integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==
+  dependencies:
+    "@jest/types" "^24.9.0"
+    ansi-regex "^4.0.0"
+    ansi-styles "^3.2.0"
+    react-is "^16.8.4"
+
 pretty-format@^25.2.1, pretty-format@^25.5.0:
   version "25.5.0"
   resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a"
@@ -7788,12 +8079,12 @@ promise-retry@^1.1.1:
     retry "^0.10.0"
 
 prompts@^2.0.1:
-  version "2.3.0"
-  resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.0.tgz#a444e968fa4cc7e86689a74050685ac8006c4cc4"
-  integrity sha512-NfbbPPg/74fT7wk2XYQ7hAIp9zJyZp5Fu19iRbORqqy1BhtrkZ0fPafBU+7bmn8ie69DpT0R6QpJIN2oisYjJg==
+  version "2.3.2"
+  resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068"
+  integrity sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA==
   dependencies:
     kleur "^3.0.3"
-    sisteransi "^1.0.3"
+    sisteransi "^1.0.4"
 
 promzard@^0.3.0:
   version "0.3.0"
@@ -7830,9 +8121,9 @@ pseudomap@^1.0.2:
   integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
 
 psl@^1.1.28:
-  version "1.4.0"
-  resolved "https://registry.yarnpkg.com/psl/-/psl-1.4.0.tgz#5dd26156cdb69fa1fdb8ab1991667d3f80ced7c2"
-  integrity sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==
+  version "1.8.0"
+  resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
+  integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
 
 pump@^2.0.0:
   version "2.0.1"
@@ -7880,9 +8171,9 @@ qrcode-terminal@^0.12.0:
   integrity sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==
 
 qs@^6.9.1:
-  version "6.9.3"
-  resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.3.tgz#bfadcd296c2d549f1dffa560619132c977f5008e"
-  integrity sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==
+  version "6.9.4"
+  resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.4.tgz#9090b290d1f91728d3c22e54843ca44aea5ab687"
+  integrity sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==
 
 qs@~6.5.2:
   version "6.5.2"
@@ -7890,9 +8181,9 @@ qs@~6.5.2:
   integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
 
 query-string@^6.8.2:
-  version "6.9.0"
-  resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.9.0.tgz#1c3b727c370cf00f177c99f328fda2108f8fa3dd"
-  integrity sha512-KG4bhCFYapExLsUHrFt+kQVEegF2agm4cpF/VNc6pZVthIfCc/GK8t8VyNIE3nyXG9DK3Tf2EGkxjR6/uRdYsA==
+  version "6.12.1"
+  resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.12.1.tgz#2ae4d272db4fba267141665374e49a1de09e8a7c"
+  integrity sha512-OHj+zzfRMyj3rmo/6G8a5Ifvw3AleL/EbcHMD27YA31Q+cO5lfmQxECkImuNVjcskLcvBRVHNAB3w6udMs1eAA==
   dependencies:
     decode-uri-component "^0.2.0"
     split-on-first "^1.0.0"
@@ -7908,12 +8199,17 @@ quick-lru@^1.0.0:
   resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8"
   integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=
 
+quick-lru@^4.0.1:
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f"
+  integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==
+
 qw@~1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/qw/-/qw-1.0.1.tgz#efbfdc740f9ad054304426acb183412cc8b996d4"
   integrity sha1-77/cdA+a0FQwRCassYNBLMi5ltQ=
 
-rc@^1.0.1, rc@^1.1.6, rc@^1.2.7, rc@^1.2.8:
+rc@^1.0.1, rc@^1.1.6, rc@^1.2.8:
   version "1.2.8"
   resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
   integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
@@ -7930,10 +8226,10 @@ re2@1.11.0:
   dependencies:
     nan "^2.14.1"
 
-react-is@^16.12.0:
-  version "16.12.0"
-  resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.12.0.tgz#2cc0fe0fba742d97fd527c42a13bec4eeb06241c"
-  integrity sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q==
+react-is@^16.12.0, react-is@^16.8.4:
+  version "16.13.1"
+  resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
+  integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
 
 read-chunk@^2.1.0:
   version "2.1.0"
@@ -8046,9 +8342,9 @@ read@1, read@~1.0.1, read@~1.0.7:
     mute-stream "~0.0.4"
 
 "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.6, readable-stream@~2.3.6:
-  version "2.3.6"
-  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
-  integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
+  version "2.3.7"
+  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
+  integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
   dependencies:
     core-util-is "~1.0.0"
     inherits "~2.0.3"
@@ -8111,6 +8407,14 @@ redent@^2.0.0:
     indent-string "^3.0.0"
     strip-indent "^2.0.0"
 
+redent@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f"
+  integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==
+  dependencies:
+    indent-string "^4.0.0"
+    strip-indent "^3.0.0"
+
 redeyed@~2.1.0:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/redeyed/-/redeyed-2.1.1.tgz#8984b5815d99cb220469c99eeeffe38913e6cc0b"
@@ -8131,14 +8435,14 @@ regenerate@^1.4.0:
   integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==
 
 regenerator-runtime@^0.13.4:
-  version "0.13.4"
-  resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.4.tgz#e96bf612a3362d12bb69f7e8f74ffeab25c7ac91"
-  integrity sha512-plpwicqEzfEyTQohIKktWigcLzmNStMGwbOUbykx51/29Z3JOGYldaaNGK7ngNXV+UcoqvIMmloZ48Sr74sd+g==
+  version "0.13.5"
+  resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697"
+  integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==
 
 regenerator-transform@^0.14.2:
-  version "0.14.2"
-  resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.2.tgz#949d9d87468ff88d5a7e4734ebb994a892de1ff2"
-  integrity sha512-V4+lGplCM/ikqi5/mkkpJ06e9Bujq1NFmNLvsCs56zg3ZbzrnUzAtizZ24TXxtRX/W2jcdScwQCnbL0CICTFkQ==
+  version "0.14.4"
+  resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7"
+  integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==
   dependencies:
     "@babel/runtime" "^7.8.4"
     private "^0.1.8"
@@ -8157,9 +8461,9 @@ regexpp@^2.0.1:
   integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==
 
 regexpp@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.0.0.tgz#dd63982ee3300e67b41c1956f850aa680d9d330e"
-  integrity sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g==
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2"
+  integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==
 
 regexpu-core@^4.7.0:
   version "4.7.0"
@@ -8375,7 +8679,7 @@ resolve-url@^0.2.1:
   resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
   integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
 
-resolve@^1.1.6, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.3.2, resolve@^1.5.0:
+resolve@^1.1.6, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.3.2:
   version "1.17.0"
   resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444"
   integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==
@@ -8412,7 +8716,7 @@ retry@^0.12.0:
   resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b"
   integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=
 
-reusify@^1.0.0:
+reusify@^1.0.4:
   version "1.0.4"
   resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
   integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
@@ -8431,7 +8735,7 @@ rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2:
   dependencies:
     glob "^7.1.3"
 
-rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3, rimraf@^2.7.1:
+rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3, rimraf@^2.7.1:
   version "2.7.1"
   resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
   integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
@@ -8446,9 +8750,9 @@ rimraf@~2.4.0:
     glob "^6.0.1"
 
 roarr@^2.15.2:
-  version "2.15.2"
-  resolved "https://registry.yarnpkg.com/roarr/-/roarr-2.15.2.tgz#34f6229ae3c8c12167c4ae60f58fe75e79a1e394"
-  integrity sha512-jmaDhK9CO4YbQAV8zzCnq9vjAqeO489MS5ehZ+rXmFiPFFE6B+S9KYO6prjmLJ5A0zY3QxVlQdrIya7E/azz/Q==
+  version "2.15.3"
+  resolved "https://registry.yarnpkg.com/roarr/-/roarr-2.15.3.tgz#65248a291a15af3ebfd767cbf7e44cb402d1d836"
+  integrity sha512-AEjYvmAhlyxOeB9OqPUzQCo3kuAkNfuDk/HqWbZdFsqDFpapkTjiw+p4svNEoRLvuqNTxqfL+s+gtD4eDgZ+CA==
   dependencies:
     boolean "^3.0.0"
     detect-node "^2.0.4"
@@ -8462,12 +8766,10 @@ rsvp@^4.8.4:
   resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734"
   integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==
 
-run-async@^2.2.0:
-  version "2.3.0"
-  resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
-  integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA=
-  dependencies:
-    is-promise "^2.1.0"
+run-async@^2.4.0:
+  version "2.4.1"
+  resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
+  integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==
 
 run-parallel@^1.1.9:
   version "1.1.9"
@@ -8481,17 +8783,17 @@ run-queue@^1.0.0, run-queue@^1.0.3:
   dependencies:
     aproba "^1.1.1"
 
-rxjs@^6.4.0:
-  version "6.5.3"
-  resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.3.tgz#510e26317f4db91a7eb1de77d9dd9ba0a4899a3a"
-  integrity sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==
+rxjs@^6.5.3:
+  version "6.5.5"
+  resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec"
+  integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==
   dependencies:
     tslib "^1.9.0"
 
 safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0:
-  version "5.2.0"
-  resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
-  integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==
+  version "5.2.1"
+  resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
+  integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
 
 safe-buffer@~5.1.0, safe-buffer@~5.1.1:
   version "5.1.2"
@@ -8535,7 +8837,7 @@ sax@1.2.1:
   resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a"
   integrity sha1-e45lYZCyKOgaZq6nSEgNgozS03o=
 
-sax@>=0.6.0, sax@^1.2.1, sax@^1.2.4:
+sax@>=0.6.0, sax@^1.2.1:
   version "1.2.4"
   resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
   integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
@@ -8617,7 +8919,7 @@ semver-utils@1.1.4:
   resolved "https://registry.yarnpkg.com/semver-utils/-/semver-utils-1.1.4.tgz#cf0405e669a57488913909fc1c3f29bf2a4871e2"
   integrity sha512-EjnoLE5OGmDAVV/8YDoN5KiajNadjzIp9BAHOhYeQHt7j0UWxjmgsx4YD48wp4Ue1Qogq38F1GNUJNqF1kKKxA==
 
-"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1:
+"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", "semver@^2.3.0 || 3.x || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1:
   version "5.7.1"
   resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
   integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
@@ -8722,9 +9024,9 @@ shortid@2.2.15:
     nanoid "^2.1.0"
 
 signal-exit@^3.0.0, signal-exit@^3.0.2:
-  version "3.0.2"
-  resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
-  integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
+  version "3.0.3"
+  resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
+  integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
 
 signale@^1.2.1:
   version "1.4.0"
@@ -8743,22 +9045,22 @@ simple-git@1.132.0:
     debug "^4.0.1"
 
 sinon@^9.0.1:
-  version "9.0.1"
-  resolved "https://registry.yarnpkg.com/sinon/-/sinon-9.0.1.tgz#dbb18f7d8f5835bcf91578089c0a97b2fffdd73b"
-  integrity sha512-iTTyiQo5T94jrOx7X7QLBZyucUJ2WvL9J13+96HMfm2CGoJYbIPqRfl6wgNcqmzk0DI28jeGx5bUTXizkrqBmg==
+  version "9.0.2"
+  resolved "https://registry.yarnpkg.com/sinon/-/sinon-9.0.2.tgz#b9017e24633f4b1c98dfb6e784a5f0509f5fd85d"
+  integrity sha512-0uF8Q/QHkizNUmbK3LRFqx5cpTttEVXudywY9Uwzy8bTfZUhljZ7ARzSxnRHWYWtVTeh4Cw+tTb3iU21FQVO9A==
   dependencies:
-    "@sinonjs/commons" "^1.7.0"
-    "@sinonjs/fake-timers" "^6.0.0"
+    "@sinonjs/commons" "^1.7.2"
+    "@sinonjs/fake-timers" "^6.0.1"
     "@sinonjs/formatio" "^5.0.1"
     "@sinonjs/samsam" "^5.0.3"
     diff "^4.0.2"
     nise "^4.0.1"
     supports-color "^7.1.0"
 
-sisteransi@^1.0.3:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.4.tgz#386713f1ef688c7c0304dc4c0632898941cad2e3"
-  integrity sha512-/ekMoM4NJ59ivGSfKapeG+FWtrmWvA1p6FBZwXrqojw90vJu8lBmrTxCMuBCydKtkaUe2zt4PlxeTKpjwMbyig==
+sisteransi@^1.0.4:
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed"
+  integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==
 
 slash@^2.0.0:
   version "2.0.0"
@@ -8854,20 +9156,20 @@ sorted-union-stream@~2.1.3:
     stream-iterate "^1.1.0"
 
 source-map-resolve@^0.5.0:
-  version "0.5.2"
-  resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259"
-  integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==
+  version "0.5.3"
+  resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a"
+  integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==
   dependencies:
-    atob "^2.1.1"
+    atob "^2.1.2"
     decode-uri-component "^0.2.0"
     resolve-url "^0.2.1"
     source-map-url "^0.4.0"
     urix "^0.1.0"
 
 source-map-support@^0.5.16, source-map-support@^0.5.6:
-  version "0.5.16"
-  resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042"
-  integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==
+  version "0.5.19"
+  resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
+  integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==
   dependencies:
     buffer-from "^1.0.0"
     source-map "^0.6.0"
@@ -8906,14 +9208,14 @@ spdx-correct@^3.0.0:
     spdx-license-ids "^3.0.0"
 
 spdx-exceptions@^2.1.0:
-  version "2.2.0"
-  resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977"
-  integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==
+  version "2.3.0"
+  resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d"
+  integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==
 
 spdx-expression-parse@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0"
-  integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679"
+  integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==
   dependencies:
     spdx-exceptions "^2.1.0"
     spdx-license-ids "^3.0.0"
@@ -8995,6 +9297,11 @@ ssri@^8.0.0:
   dependencies:
     minipass "^3.1.1"
 
+stack-utils@^1.0.1:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8"
+  integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==
+
 stack-utils@^2.0.2:
   version "2.0.2"
   resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.2.tgz#5cf48b4557becb4638d0bc4f21d23f5d19586593"
@@ -9003,9 +9310,9 @@ stack-utils@^2.0.2:
     escape-string-regexp "^2.0.0"
 
 state-toggle@^1.0.0:
-  version "1.0.2"
-  resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.2.tgz#75e93a61944116b4959d665c8db2d243631d6ddc"
-  integrity sha512-8LpelPGR0qQM4PnfLiplOQNJcIN1/r2Gy0xKB2zKnIW2YzPMt2sR4I/+gtPjhN7Svh9kw+zqEg2SFwpBO9iNiw==
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe"
+  integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==
 
 static-extend@^0.1.1:
   version "0.1.2"
@@ -9045,9 +9352,9 @@ stream-iterate@^1.1.0:
     stream-shift "^1.0.0"
 
 stream-shift@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952"
-  integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d"
+  integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==
 
 strict-uri-encode@^2.0.0:
   version "2.0.0"
@@ -9098,29 +9405,46 @@ string-width@^4.1.0, string-width@^4.2.0:
     strip-ansi "^6.0.0"
 
 string.prototype.padend@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz#f3aaef7c1719f170c5eab1c32bf780d96e21f2f0"
-  integrity sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz#dc08f57a8010dc5c153550318f67e13adbb72ac3"
+  integrity sha512-3aIv8Ffdp8EZj8iLwREGpQaUZiPyrWrpzMBHvkiSW/bK/EGve9np07Vwy7IJ5waydpGXzQZu/F8Oze2/IWkBaA==
   dependencies:
-    define-properties "^1.1.2"
-    es-abstract "^1.4.3"
-    function-bind "^1.0.2"
+    define-properties "^1.1.3"
+    es-abstract "^1.17.0-next.1"
 
-string.prototype.trimleft@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz#6cc47f0d7eb8d62b0f3701611715a3954591d634"
-  integrity sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==
+string.prototype.trimend@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913"
+  integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==
   dependencies:
     define-properties "^1.1.3"
-    function-bind "^1.1.1"
+    es-abstract "^1.17.5"
 
-string.prototype.trimright@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz#669d164be9df9b6f7559fa8e89945b168a5a6c58"
-  integrity sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==
+string.prototype.trimleft@^2.1.1:
+  version "2.1.2"
+  resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz#4408aa2e5d6ddd0c9a80739b087fbc067c03b3cc"
+  integrity sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==
   dependencies:
     define-properties "^1.1.3"
-    function-bind "^1.1.1"
+    es-abstract "^1.17.5"
+    string.prototype.trimstart "^1.0.0"
+
+string.prototype.trimright@^2.1.1:
+  version "2.1.2"
+  resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz#c76f1cef30f21bbad8afeb8db1511496cfb0f2a3"
+  integrity sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==
+  dependencies:
+    define-properties "^1.1.3"
+    es-abstract "^1.17.5"
+    string.prototype.trimend "^1.0.0"
+
+string.prototype.trimstart@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54"
+  integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==
+  dependencies:
+    define-properties "^1.1.3"
+    es-abstract "^1.17.5"
 
 string_decoder@^1.1.1:
   version "1.3.0"
@@ -9209,10 +9533,17 @@ strip-indent@^2.0.0:
   resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68"
   integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=
 
+strip-indent@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001"
+  integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==
+  dependencies:
+    min-indent "^1.0.0"
+
 strip-json-comments@^3.0.1:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7"
-  integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180"
+  integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==
 
 strip-json-comments@~2.0.1:
   version "2.0.1"
@@ -9233,10 +9564,10 @@ supports-color@^7.0.0, supports-color@^7.1.0:
   dependencies:
     has-flag "^4.0.0"
 
-supports-hyperlinks@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.0.0.tgz#b1b94a159e9df00b0a554b2d5f0e0a89690334b0"
-  integrity sha512-bFhn0MQ8qefLyJ3K7PpHiPUTuTVPWw6RXfaMeV6xgJLXtBbszyboz1bvGTVv4R0YpQm2DqlXXn0fFHhxUHVE5w==
+supports-hyperlinks@^2.0.0, supports-hyperlinks@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47"
+  integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA==
   dependencies:
     has-flag "^4.0.0"
     supports-color "^7.0.0"
@@ -9256,7 +9587,7 @@ table@^5.2.3:
     slice-ansi "^2.1.0"
     string-width "^3.0.0"
 
-tar@^4, tar@^4.4.10, tar@^4.4.12, tar@^4.4.13:
+tar@^4.4.10, tar@^4.4.12, tar@^4.4.13:
   version "4.4.13"
   resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525"
   integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==
@@ -9286,13 +9617,14 @@ temp-dir@^2.0.0:
   resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e"
   integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==
 
-tempy@^0.4.0:
-  version "0.4.0"
-  resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.4.0.tgz#2240e944cbb6b843415b7ef10b6dff9cda7297d0"
-  integrity sha512-mKnScm8aXv+cG6l1Nzp6mERGgC4UblbPnSDeQp83JgZ7xqDcnl+7u3+6zXnf1UE7YluDUTEIna1iKYwCSaOk9g==
+tempy@^0.5.0:
+  version "0.5.0"
+  resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.5.0.tgz#2785c89df39fcc4d1714fc554813225e1581d70b"
+  integrity sha512-VEY96x7gbIRfsxqsafy2l5yVxxp3PhwAGoWMyC2D2Zt5DmEv+2tGiPOrquNRpf21hhGnKLVEsuqleqiZmKG/qw==
   dependencies:
+    is-stream "^2.0.0"
     temp-dir "^2.0.0"
-    type-fest "^0.10.0"
+    type-fest "^0.12.0"
     unique-string "^2.0.0"
 
 term-size@^1.2.0:
@@ -9470,7 +9802,7 @@ tough-cookie@^3.0.1:
     psl "^1.1.28"
     punycode "^2.1.1"
 
-tr46@^2.0.0:
+tr46@^2.0.2:
   version "2.0.2"
   resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479"
   integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==
@@ -9487,15 +9819,20 @@ trim-newlines@^2.0.0:
   resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20"
   integrity sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=
 
+trim-newlines@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.0.tgz#79726304a6a898aa8373427298d54c2ee8b1cb30"
+  integrity sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA==
+
 trim-off-newlines@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3"
   integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM=
 
 trim-trailing-lines@^1.0.0:
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.2.tgz#d2f1e153161152e9f02fabc670fb40bec2ea2e3a"
-  integrity sha512-MUjYItdrqqj2zpcHFTkMa9WAv4JHTI6gnRQGPFLrt5L9a6tRMiDnIqYl8JBvu2d2Tc3lWJKQwlGCp0K8AvCM+Q==
+  version "1.1.3"
+  resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.3.tgz#7f0739881ff76657b7776e10874128004b625a94"
+  integrity sha512-4ku0mmjXifQcTVfYDfR5lpgV7zVqPg6zV9rdZmwOPqq0+Zq19xDqEgagqVbc4pOOShbncuAOIs59R3+3gcF3ZA==
 
 trim@0.0.1:
   version "0.0.1"
@@ -9503,9 +9840,9 @@ trim@0.0.1:
   integrity sha1-WFhUf2spB1fulczMZm+1AITEYN0=
 
 trough@^1.0.0:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.4.tgz#3b52b1f13924f460c3fbfd0df69b587dbcbc762e"
-  integrity sha512-tdzBRDGWcI1OpPVmChbdSKhvSVurznZ8X36AYURAcl+0o2ldlCY2XPzyXNNxwJwwyIU+rIglTCG4kxtNKBQH7Q==
+  version "1.0.5"
+  resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406"
+  integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==
 
 ts-essentials@^4.0.0:
   version "4.0.0"
@@ -9513,9 +9850,9 @@ ts-essentials@^4.0.0:
   integrity sha512-uQJX+SRY9mtbKU+g9kl5Fi7AEMofPCvHfJkQlaygpPmHPZrtgaBqbWFOYyiA47RhnSwwnXdepUJrgqUYxoUyhQ==
 
 tslib@^1.8.1, tslib@^1.9.0:
-  version "1.10.0"
-  resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a"
-  integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==
+  version "1.13.0"
+  resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043"
+  integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==
 
 tsutils@^3.17.1:
   version "3.17.1"
@@ -9553,21 +9890,21 @@ type-detect@4.0.8, type-detect@^4.0.8:
   resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
   integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
 
-type-fest@0.13.1:
+type-fest@0.13.1, type-fest@^0.13.1:
   version "0.13.1"
   resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934"
   integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==
 
-type-fest@^0.10.0:
-  version "0.10.0"
-  resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.10.0.tgz#7f06b2b9fbfc581068d1341ffabd0349ceafc642"
-  integrity sha512-EUV9jo4sffrwlg8s0zDhP0T2WD3pru5Xi0+HTE3zTUmBaZNhfkite9PdSJwdXLwPVW0jnAHT56pZHIOYckPEiw==
-
 type-fest@^0.11.0:
   version "0.11.0"
   resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1"
   integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==
 
+type-fest@^0.12.0:
+  version "0.12.0"
+  resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.12.0.tgz#f57a27ab81c68d136a51fd71467eff94157fa1ee"
+  integrity sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg==
+
 type-fest@^0.6.0:
   version "0.6.0"
   resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b"
@@ -9610,12 +9947,11 @@ uc.micro@^1.0.1, uc.micro@^1.0.5:
   integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==
 
 uglify-js@^3.1.4:
-  version "3.6.9"
-  resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.9.tgz#85d353edb6ddfb62a9d798f36e91792249320611"
-  integrity sha512-pcnnhaoG6RtrvHJ1dFncAe8Od6Nuy30oaJ82ts6//sGSXOP5UjBMEthiProjXmMNHOfd93sqlkztifFMcb+4yw==
+  version "3.9.3"
+  resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.9.3.tgz#4a285d1658b8a2ebaef9e51366b3a0f7acd79ec2"
+  integrity sha512-r5ImcL6QyzQGVimQoov3aL2ZScywrOgBXGndbWrdehKoSvGe/RmiE5Jpw/v+GvxODt6l2tpBXwA7n+qZVlHBMA==
   dependencies:
     commander "~2.20.3"
-    source-map "~0.6.1"
 
 uid-number@0.0.6:
   version "0.0.6"
@@ -9633,12 +9969,12 @@ underscore@1.8.3:
   integrity sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=
 
 unherit@^1.0.4:
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.2.tgz#14f1f397253ee4ec95cec167762e77df83678449"
-  integrity sha512-W3tMnpaMG7ZY6xe/moK04U9fBhi6wEiCYHUW5Mop/wQHf12+79EQGwxYejNdhEz2mkqkBlGwm7pxmgBKMVUj0w==
+  version "1.1.3"
+  resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22"
+  integrity sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==
   dependencies:
-    inherits "^2.0.1"
-    xtend "^4.0.1"
+    inherits "^2.0.0"
+    xtend "^4.0.0"
 
 unicode-canonical-property-names-ecmascript@^1.0.4:
   version "1.0.4"
@@ -9659,9 +9995,9 @@ unicode-match-property-value-ecmascript@^1.2.0:
   integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==
 
 unicode-property-aliases-ecmascript@^1.0.4:
-  version "1.0.5"
-  resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57"
-  integrity sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4"
+  integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==
 
 unified@^6.0.0:
   version "6.2.0"
@@ -9744,13 +10080,6 @@ unist-util-visit@^1.0.0, unist-util-visit@^1.1.0:
   dependencies:
     unist-util-visit-parents "^2.0.0"
 
-universal-user-agent@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-4.0.0.tgz#27da2ec87e32769619f68a14996465ea1cb9df16"
-  integrity sha512-eM8knLpev67iBDizr/YtqkJsF3GK8gzDc6st/WKzrTuPtcsOKW/0IdL4cnMBsU69pOx0otavLWBDGTwg+dB0aA==
-  dependencies:
-    os-name "^3.1.0"
-
 universal-user-agent@^5.0.0:
   version "5.0.0"
   resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-5.0.0.tgz#a3182aa758069bf0e79952570ca757de3579c1d9"
@@ -9758,11 +10087,6 @@ universal-user-agent@^5.0.0:
   dependencies:
     os-name "^3.1.0"
 
-universalify@^0.1.0:
-  version "0.1.2"
-  resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
-  integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
-
 universalify@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d"
@@ -9791,7 +10115,7 @@ upath@1.2.0, upath@^1.1.1:
   resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894"
   integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==
 
-update-notifier@^2.3.0, update-notifier@^2.5.0:
+update-notifier@^2.2.0, update-notifier@^2.3.0, update-notifier@^2.5.0:
   version "2.5.0"
   resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6"
   integrity sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==
@@ -9874,9 +10198,9 @@ uuid@3.3.2:
   integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==
 
 uuid@^3.3.2, uuid@^3.3.3:
-  version "3.3.3"
-  resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866"
-  integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==
+  version "3.4.0"
+  resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
+  integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
 
 uuid@^7.0.3:
   version "7.0.3"
@@ -9889,9 +10213,9 @@ v8-compile-cache@^2.0.3:
   integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==
 
 v8-to-istanbul@^4.1.3:
-  version "4.1.3"
-  resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-4.1.3.tgz#22fe35709a64955f49a08a7c7c959f6520ad6f20"
-  integrity sha512-sAjOC+Kki6aJVbUOXJbcR0MnbfjvBzwKZazEJymA2IX49uoOdEdk+4fBq5cXgYgiyKtAyrrJNtBZdOeDIF+Fng==
+  version "4.1.4"
+  resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-4.1.4.tgz#b97936f21c0e2d9996d4985e5c5156e9d4e49cd6"
+  integrity sha512-Rw6vJHj1mbdK8edjR7+zuJrpDtKIgNdAvTSAcpYfgMIw+u2dPDntD3dgN4XQFLU2/fvFQdzj+EeSGfd/jnY5fQ==
   dependencies:
     "@types/istanbul-lib-coverage" "^2.0.1"
     convert-source-map "^1.6.0"
@@ -10001,12 +10325,12 @@ whatwg-mimetype@^2.3.0:
   integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==
 
 whatwg-url@^8.0.0:
-  version "8.0.0"
-  resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.0.0.tgz#37f256cb746398e19b107bd6ef820b4ae2d15871"
-  integrity sha512-41ou2Dugpij8/LPO5Pq64K5q++MnRCBpEHvQr26/mArEKTkCV5aoXIqyhuYtE0pkqScXwhf2JP57rkRTYM29lQ==
+  version "8.1.0"
+  resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.1.0.tgz#c628acdcf45b82274ce7281ee31dd3c839791771"
+  integrity sha512-vEIkwNi9Hqt4TV9RdnaBPNt+E2Sgmo3gePebCRgZ1R7g6d23+53zCTnuB0amKI4AXq6VM8jj2DUAa0S1vjJxkw==
   dependencies:
     lodash.sortby "^4.7.0"
-    tr46 "^2.0.0"
+    tr46 "^2.0.2"
     webidl-conversions "^5.0.0"
 
 which-module@^2.0.0:
@@ -10048,9 +10372,9 @@ widest-line@^2.0.0:
     string-width "^2.1.1"
 
 windows-release@^3.1.0:
-  version "3.2.0"
-  resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.2.0.tgz#8122dad5afc303d833422380680a79cdfa91785f"
-  integrity sha512-QTlz2hKLrdqukrsapKsINzqMgOUpQW268eJ0OaOpJN32h272waxR9fkB9VoWRtK7uKHG5EHJcTXQBD8XZVJkFA==
+  version "3.3.0"
+  resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.3.0.tgz#dce167e9f8be733f21c849ebd4d03fe66b29b9f0"
+  integrity sha512-2HetyTg1Y+R+rUgrKeUEhAG/ZuOmTrI1NBb3ZyAGQMYmOJjBBPe4MTodghRkmLJZHwkuPi02anbeGP+Zf401LQ==
   dependencies:
     execa "^1.0.0"
 
@@ -10103,9 +10427,9 @@ write-file-atomic@^2.0.0, write-file-atomic@^2.3.0, write-file-atomic@^2.4.3:
     signal-exit "^3.0.2"
 
 write-file-atomic@^3.0.0:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.1.tgz#558328352e673b5bb192cf86500d60b230667d4b"
-  integrity sha512-JPStrIyyVJ6oCSz/691fAjFtefZ6q+fP6tm+OS4Qw6o+TGQxNp1ziY2PgS+X/m0V8OWhZiO/m4xSj+Pr4RrZvw==
+  version "3.0.3"
+  resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8"
+  integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==
   dependencies:
     imurmurhash "^0.1.4"
     is-typedarray "^1.0.0"
@@ -10120,9 +10444,9 @@ write@1.0.3:
     mkdirp "^0.5.1"
 
 ws@^7.2.3:
-  version "7.2.5"
-  resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.5.tgz#abb1370d4626a5a9cd79d8de404aa18b3465d10d"
-  integrity sha512-C34cIU4+DB2vMyAbmEKossWq2ZQDr6QEyuuCzWrM9zfw1sGc0mYiJ0UnG9zzNykt49C2Fi34hvr2vssFQRS6EA==
+  version "7.3.0"
+  resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.0.tgz#4b2f7f219b3d3737bc1a2fbf145d825b94d38ffd"
+  integrity sha512-iFtXzngZVXPGgpTlP1rBqsUK82p9tKqsWRPg5L56egiljujJT3vGAYnHANvFxBieXrTFavhzhxW52jnaWV+w2w==
 
 www-authenticate@0.6.2:
   version "0.6.2"
@@ -10184,7 +10508,7 @@ xregexp@4.2.0:
   resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.2.0.tgz#33f09542b0d7cabed46728eeacac4d5bd764ccf5"
   integrity sha512-IyMa7SVe9FyT4WbQVW3b95mTLVceHhLEezQ02+QMvmIqDnKTxk0MLWIQPSW2MXAr1zQb+9yvwYhcyQULneh3wA==
 
-xtend@^4.0.1, xtend@~4.0.1:
+xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1:
   version "4.0.2"
   resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
   integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
@@ -10215,11 +10539,9 @@ yallist@^4.0.0:
   integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
 
 yaml@^1.7.2:
-  version "1.7.2"
-  resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.7.2.tgz#f26aabf738590ab61efaca502358e48dc9f348b2"
-  integrity sha512-qXROVp90sb83XtAoqE8bP9RwAkTTZbugRUTm5YeFCBfNRPEp2YzTeqWiz7m5OORHzEvrA/qcGS8hp/E+MMROYw==
-  dependencies:
-    "@babel/runtime" "^7.6.3"
+  version "1.10.0"
+  resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e"
+  integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==
 
 yargs-parser@^10.0.0:
   version "10.1.0"
@@ -10228,14 +10550,21 @@ yargs-parser@^10.0.0:
   dependencies:
     camelcase "^4.1.0"
 
-yargs-parser@^18.1.1:
-  version "18.1.2"
-  resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.2.tgz#2f482bea2136dbde0861683abea7756d30b504f1"
-  integrity sha512-hlIPNR3IzC1YuL1c2UwwDKpXlNFBqD1Fswwh1khz5+d8Cq/8yc/Mn0i+rQXduu8hcrFKvO7Eryk+09NecTQAAQ==
+yargs-parser@^18.1.1, yargs-parser@^18.1.3:
+  version "18.1.3"
+  resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
+  integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==
   dependencies:
     camelcase "^5.0.0"
     decamelize "^1.2.0"
 
+yargs-parser@^7.0.0:
+  version "7.0.0"
+  resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9"
+  integrity sha1-jQrELxbqVd69MyyvTEA4s+P139k=
+  dependencies:
+    camelcase "^4.1.0"
+
 yargs-parser@^9.0.2:
   version "9.0.2"
   resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077"
@@ -10278,6 +10607,25 @@ yargs@^15.0.1, yargs@^15.3.1:
     y18n "^4.0.0"
     yargs-parser "^18.1.1"
 
+yargs@^8.0.2:
+  version "8.0.2"
+  resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360"
+  integrity sha1-YpmpBVsc78lp/355wdkY3Osiw2A=
+  dependencies:
+    camelcase "^4.1.0"
+    cliui "^3.2.0"
+    decamelize "^1.1.1"
+    get-caller-file "^1.0.1"
+    os-locale "^2.0.0"
+    read-pkg-up "^2.0.0"
+    require-directory "^2.1.1"
+    require-main-filename "^1.0.1"
+    set-blocking "^2.0.0"
+    string-width "^2.0.0"
+    which-module "^2.0.0"
+    y18n "^3.2.1"
+    yargs-parser "^7.0.0"
+
 yarn@1.22.4:
   version "1.22.4"
   resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.4.tgz#01c1197ca5b27f21edc8bc472cd4c8ce0e5a470e"