diff --git a/.eslintrc b/.eslintrc index cc95030..dbc8b9c 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,5 +1,9 @@ { - "extends": "oclif", + "extends": ["oclif"], + "parser": "@babel/eslint-parser", + "parserOptions": { + "requireConfigFile": false + }, "rules": { "no-console": ["warn"], "semi": ["error", "always"], diff --git a/cli/commands/add.js b/cli/commands/add.js new file mode 100644 index 0000000..6782cb2 --- /dev/null +++ b/cli/commands/add.js @@ -0,0 +1,19 @@ +const {Command} = require('@oclif/command'); + +class InstallCommand extends Command { + static description = 'install things'; + + static usage = 'usage'; + + static aliases = ['install']; + + static examples = []; + + async run() { + const {flags} = this.parse(InstallCommand); + const name = flags.name || 'world'; + this.log(`goodbye ${name} from ./src/commands/hello.js`); + } +} + +module.exports = InstallCommand; diff --git a/cli/commands/bye.js b/cli/commands/bye.js deleted file mode 100644 index 7518c4e..0000000 --- a/cli/commands/bye.js +++ /dev/null @@ -1,21 +0,0 @@ -const {Command, flags} = require('@oclif/command'); - -class GoodbyeCommand extends Command { - async run() { - const {flags} = this.parse(GoodbyeCommand); - const name = flags.name || 'world'; - this.log(`goodbye ${name} from ./src/commands/hello.js`); - } -} -GoodbyeCommand.description = `awsgwag the command here -... -Extra documentation goes here -`; - -GoodbyeCommand.flags = { - name: flags.string({char: 'q', description: 'name to print'}), -}; - -GoodbyeCommand.hidden = true; - -module.exports = GoodbyeCommand; diff --git a/cli/commands/config.js b/cli/commands/config.js new file mode 100644 index 0000000..8760c22 --- /dev/null +++ b/cli/commands/config.js @@ -0,0 +1,43 @@ +const {Command, flags} = require('@oclif/command'); + +class UninstallCommand extends Command { + // static _base = 'thing'; + // static id = 'thing'; + // static title = 'title'; + + static description = `Describe the command here + + Extra documentation goes here + `; + // static hidden - false; + + static usage = 'stuff'; + + static help = 'stuff'; + + // static aliases = ['uninstall']; + + // static strict = false; + // static parse = true; + static flags = { + name: flags.string({char: 'n', description: 'name to print'}), + } + + // static args + // static plugin + // static examples + // static parserOptions + // static + + static flags = { + name: flags.string({char: 'n', description: 'name to print'}), + } + + async run() { + const {flags} = this.parse(UninstallCommand); + const name = flags.name || 'world'; + this.log(`hello ${name} from ./src/commands/hello.js`); + } +} + +module.exports = UninstallCommand; diff --git a/cli/commands/hello.js b/cli/commands/hello.js deleted file mode 100644 index 40caddc..0000000 --- a/cli/commands/hello.js +++ /dev/null @@ -1,20 +0,0 @@ -const {Command, flags} = require('@oclif/command'); - -class HelloCommand extends Command { - async run() { - const {flags} = this.parse(HelloCommand); - const name = flags.name || 'world'; - this.log(`hello ${name} from ./src/commands/hello.js`); - } -} - -HelloCommand.description = `Describe the command here -... -Extra documentation goes here -`; - -HelloCommand.flags = { - name: flags.string({char: 'n', description: 'name to print'}), -}; - -module.exports = HelloCommand; diff --git a/cli/commands/info.js b/cli/commands/info.js new file mode 100644 index 0000000..84d0bf9 --- /dev/null +++ b/cli/commands/info.js @@ -0,0 +1,43 @@ +const {Command, flags} = require('@oclif/command'); + +class UninstallCommand extends Command { + // static _base = 'thing'; + // static id = 'thing'; + // static title = 'title'; + + static description = `Describe the command here + + Extra documentation goes here + `; + // static hidden - false; + + static usage = 'stuff'; + + static help = 'stuff'; + + static aliases = ['uninstall']; + + // static strict = false; + // static parse = true; + static flags = { + name: flags.string({char: 'n', description: 'name to print'}), + } + + // static args + // static plugin + // static examples + // static parserOptions + // static + + static flags = { + name: flags.string({char: 'n', description: 'name to print'}), + } + + async run() { + const {flags} = this.parse(UninstallCommand); + const name = flags.name || 'world'; + this.log(`hello ${name} from ./src/commands/hello.js`); + } +} + +module.exports = UninstallCommand; diff --git a/cli/commands/list.js b/cli/commands/list.js new file mode 100644 index 0000000..84d0bf9 --- /dev/null +++ b/cli/commands/list.js @@ -0,0 +1,43 @@ +const {Command, flags} = require('@oclif/command'); + +class UninstallCommand extends Command { + // static _base = 'thing'; + // static id = 'thing'; + // static title = 'title'; + + static description = `Describe the command here + + Extra documentation goes here + `; + // static hidden - false; + + static usage = 'stuff'; + + static help = 'stuff'; + + static aliases = ['uninstall']; + + // static strict = false; + // static parse = true; + static flags = { + name: flags.string({char: 'n', description: 'name to print'}), + } + + // static args + // static plugin + // static examples + // static parserOptions + // static + + static flags = { + name: flags.string({char: 'n', description: 'name to print'}), + } + + async run() { + const {flags} = this.parse(UninstallCommand); + const name = flags.name || 'world'; + this.log(`hello ${name} from ./src/commands/hello.js`); + } +} + +module.exports = UninstallCommand; diff --git a/cli/commands/remove.js b/cli/commands/remove.js new file mode 100644 index 0000000..84d0bf9 --- /dev/null +++ b/cli/commands/remove.js @@ -0,0 +1,43 @@ +const {Command, flags} = require('@oclif/command'); + +class UninstallCommand extends Command { + // static _base = 'thing'; + // static id = 'thing'; + // static title = 'title'; + + static description = `Describe the command here + + Extra documentation goes here + `; + // static hidden - false; + + static usage = 'stuff'; + + static help = 'stuff'; + + static aliases = ['uninstall']; + + // static strict = false; + // static parse = true; + static flags = { + name: flags.string({char: 'n', description: 'name to print'}), + } + + // static args + // static plugin + // static examples + // static parserOptions + // static + + static flags = { + name: flags.string({char: 'n', description: 'name to print'}), + } + + async run() { + const {flags} = this.parse(UninstallCommand); + const name = flags.name || 'world'; + this.log(`hello ${name} from ./src/commands/hello.js`); + } +} + +module.exports = UninstallCommand; diff --git a/cli/commands/status.js b/cli/commands/status.js new file mode 100644 index 0000000..84d0bf9 --- /dev/null +++ b/cli/commands/status.js @@ -0,0 +1,43 @@ +const {Command, flags} = require('@oclif/command'); + +class UninstallCommand extends Command { + // static _base = 'thing'; + // static id = 'thing'; + // static title = 'title'; + + static description = `Describe the command here + + Extra documentation goes here + `; + // static hidden - false; + + static usage = 'stuff'; + + static help = 'stuff'; + + static aliases = ['uninstall']; + + // static strict = false; + // static parse = true; + static flags = { + name: flags.string({char: 'n', description: 'name to print'}), + } + + // static args + // static plugin + // static examples + // static parserOptions + // static + + static flags = { + name: flags.string({char: 'n', description: 'name to print'}), + } + + async run() { + const {flags} = this.parse(UninstallCommand); + const name = flags.name || 'world'; + this.log(`hello ${name} from ./src/commands/hello.js`); + } +} + +module.exports = UninstallCommand; diff --git a/cli/hooks/init.js b/cli/hooks/init.js index f184c42..bbc3559 100644 --- a/cli/hooks/init.js +++ b/cli/hooks/init.js @@ -16,6 +16,8 @@ module.exports = async({id, argv, config}) => { require('debug').enable('*'); // eslint-disable-line node/no-extraneous-require debug('cli init start with id=%s, argv=%O', id, argv); + // if config cache exists then just load that and move on? + // Get config vars const ENV_PREFIX = process.env.HYPERDRIVE_BOOTSTRAP_ENV_PREFIX || 'HYPERDRIVE'; const ENV_SEPARATOR = process.env.HYPERDRIVE_BOOTSTRAP_ENV_SEPARATOR || '_'; @@ -38,18 +40,40 @@ module.exports = async({id, argv, config}) => { // Then defaults bootstrapConf.defaults({ - mode: 'cli', - leia: Object.prototype.hasOwnProperty.call(process.env, 'LEIA_PARSER_RUNNING'), - packaged: Object.prototype.hasOwnProperty.call(process, 'pkg'), - plugins: [], - pluginDirs: [], product: 'hyperdrive', + mode: 'cli', + bootstrap: { + module: path.join(__dirname, '..', '..', 'utils', 'bootstrap.js'), + env: { + separator: '_', + prefix: 'HYPERDRIVE', + }, + landoPlugins: true, + // @TODO: core plugin() below? + /* + plugins/core + plugins/ + */ + plugins: [], + // @TODO: + pluginDirs: [], + }, }); debug('get config from defaults'); + // @TODO: optionally add in lando plugin dirs? + // @NOTE: this will need to do a light lando bootstrap to get plugin dirs and such + // plugin manifests should be yaml eg dumpable to file + // Reset debugger to indicate product status debug = createDebugger(bootstrapConf.get('product'), 'hooks', 'init'); - debug('bootstrap config set to %O', bootstrapConf.get()); + debug('bootstrap config set to %O', bootstrapConf.get('source')); + + // @TODO: load in oclif somewhere? + // leia: Object.prototype.hasOwnProperty.call(process.env, 'LEIA_PARSER_RUNNING'), + // packaged: Object.prototype.hasOwnProperty.call(process, 'pkg'), + + // merge in some oclif stuff? // 0. need to add plugins and plugin dirs to bootstrap config // 1. Check if bootstrap exists, throw error if not @@ -72,22 +96,6 @@ module.exports = async({id, argv, config}) => { // *. what do commandIDs do? // *. install defaults eg desktop -> lando-desktop /* - hyperdrive: - config: - // list of installers - installers: - - // Just OCLIF command objects, this is just a list of metadata - commands: - - {id: 'install', variant: 'lando-docker-engine', path: } - - plugins: - - pathtofunction -> gets config and returns plugin - - // Final mods to commands, useful to add more options/args etc - mods: (?) - - {id: 'install', path: } - // commands = [require('./../more/bye')]; // config.plugins.push(new DynamicPlugin(config)) // console.log(config.plugins); diff --git a/config.yml b/config.yml index 6c75175..22f25e7 100644 --- a/config.yml +++ b/config.yml @@ -1,5 +1,29 @@ -bootstrap: - module: ./lib/bootstrap.js - env: - separator: _ - prefix: HYPERDRIVE +# +# This is the default config used to instantiate hyperdrive if it is instantiated programmtically with no options eg: +# +# const hyperdrive = new Hyperdrive(); +# + +config: seg + + + +# should we put "core" config here? +# hyperdrive: +# config: +# // list of installers +# installers: + +# // Just OCLIF command objects, this is just a list of metadata +# commands: +# - {id: 'install', variant: 'lando-docker-engine', path: } + +# plugins: +# - pathtofunction -> gets config and returns plugin + +# // Final mods to commands, useful to add more options/args etc +# mods: (?) +# - {id: 'install', path: } +test: true +path: ./lib/hyperdrive.js +path2: /things/stuff/people diff --git a/package.json b/package.json index 572341c..044cdfc 100644 --- a/package.json +++ b/package.json @@ -3,10 +3,30 @@ "description": "A library and cli for Lando dependency and package management.", "version": "0.7.0-alpha.0", "author": "Mike Pirog @pirog", + "license": "GPL-3.0", + "repository": "lando/hyperdrive", + "bugs": "https://github.com/lando/hyperdrive/issues", + "homepage": "https://github.com/lando/hyperdrive", + "keywords": [ + "lando", + "oclif" + ], + "engines": { + "node": ">=14.0.0" + }, + "main": "lib/hyperdrive.js", "bin": { "hyperdrive": "./bin/hyperdrive" }, - "bugs": "https://github.com/lando/hyperdrive/issues", + "files": [ + "/bin", + "/cli", + "/lib", + "/npm-shrinkwrap.json", + "/scripts", + "/src", + "/utils" + ], "dependencies": { "@oclif/command": "^1", "@oclif/config": "^1", @@ -15,13 +35,15 @@ "nconf-yaml": "^1.0.2" }, "devDependencies": { + "@babel/core": "^7.15.5", + "@babel/eslint-parser": "^7.15.7", "@oclif/errors": "^1.3.5", "@oclif/test": "^1", "chai": "^4", "cli-ux": "^5.6.3", "command-line-test": "^1.0.10", "eslint": "^5.13", - "eslint-config-oclif": "^3.1", + "eslint-config-oclif": "^3.1.0", "execa": "^5.1.1", "globby": "^10", "leia-parser": "^0.4.0", @@ -32,25 +54,16 @@ "rimraf": "^3.0.2", "version-bump-prompt": "^6.1.0" }, - "engines": { - "node": ">=14.0.0" + "babel": {}, + "scripts": { + "build": "yarn clean && yarn pkg -c package.json -t node14 bin/hyperdrive", + "clean": "rimraf dist", + "generate:leia-tests": "leia \"examples/**/README.md\" test/leia -r 2 -s \"Start up tests\" -t \"Verification commands\" -c \"Destroy tests\" --split-file --spawn --stdin", + "lint": "eslint .", + "release": "bump --preid alpha --tag --all --push package.json", + "test:functional": "mocha --timeout 900000 test/**/*.func.js", + "test:unit": "nyc mocha --forbid-only \"test/**/*.test.js\"" }, - "files": [ - "/bin", - "/cli", - "/lib", - "/npm-shrinkwrap.json", - "/scripts", - "/src", - "/utils" - ], - "homepage": "https://github.com/lando/hyperdrive", - "keywords": [ - "lando", - "oclif" - ], - "license": "GPL-3.0", - "main": "lib/hyperdrive.js", "oclif": { "bin": "hyperdrive", "commands": "./cli/commands", @@ -83,15 +96,5 @@ "package.json", "yarn.lock" ] - }, - "repository": "lando/hyperdrive", - "scripts": { - "build": "yarn clean && yarn pkg -c package.json -t node14 bin/hyperdrive", - "clean": "rimraf dist", - "generate:leia-tests": "leia \"examples/**/README.md\" test/leia -r 2 -s \"Start up tests\" -t \"Verification commands\" -c \"Destroy tests\" --split-file --spawn --stdin", - "lint": "eslint .", - "release": "bump --preid alpha --tag --all --push package.json", - "test:functional": "mocha --timeout 900000 test/**/*.func.js", - "test:unit": "nyc mocha --forbid-only \"test/**/*.test.js\"" } } diff --git a/utils/ministrapper.js b/utils/ministrapper.js index 5cd2fbc..dd0c2f9 100644 --- a/utils/ministrapper.js +++ b/utils/ministrapper.js @@ -2,6 +2,19 @@ const Provider = require('nconf').Provider; /* * Just a lite wrapper around nconf to make things a bit easier + * + * @NOTE: eventually this should be a config loading util for both lando/hyperdrive + * + * should be able to: + * 0. convenience methods for json/yaml + * 1. load YAML files + * 2. load "plugin manifests" + * 3. load "landofiles" + * 4. load namespaced envvars + * + * + * + * */ class Ministrapper extends Provider { constructor(namespace = 'ministrapper') { diff --git a/yarn.lock b/yarn.lock index 35b3ace..0e360b6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,6 +9,41 @@ dependencies: "@babel/highlight" "^7.14.5" +"@babel/compat-data@^7.15.0": + version "7.15.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.15.0.tgz#2dbaf8b85334796cafbb0f5793a90a2fc010b176" + integrity sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA== + +"@babel/core@^7.15.5": + version "7.15.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.5.tgz#f8ed9ace730722544609f90c9bb49162dc3bf5b9" + integrity sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg== + dependencies: + "@babel/code-frame" "^7.14.5" + "@babel/generator" "^7.15.4" + "@babel/helper-compilation-targets" "^7.15.4" + "@babel/helper-module-transforms" "^7.15.4" + "@babel/helpers" "^7.15.4" + "@babel/parser" "^7.15.5" + "@babel/template" "^7.15.4" + "@babel/traverse" "^7.15.4" + "@babel/types" "^7.15.4" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + semver "^6.3.0" + source-map "^0.5.0" + +"@babel/eslint-parser@^7.15.7": + version "7.15.7" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.15.7.tgz#2dc3d0ff0ea22bb1e08d93b4eeb1149bf1c75f2d" + integrity sha512-yJkHyomClm6A2Xzb8pdAo4HzYMSXFn1O5zrCYvbFP0yQFvHueLedV8WiEno8yJOKStjUXzBZzJFeWQ7b3YMsqQ== + dependencies: + eslint-scope "^5.1.1" + eslint-visitor-keys "^2.1.0" + semver "^6.3.0" + "@babel/generator@^7.15.0", "@babel/generator@^7.4.0": version "7.15.0" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.0.tgz#a7d0c172e0d814974bad5aa77ace543b97917f15" @@ -18,6 +53,25 @@ jsesc "^2.5.1" source-map "^0.5.0" +"@babel/generator@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.4.tgz#85acb159a267ca6324f9793986991ee2022a05b0" + integrity sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw== + dependencies: + "@babel/types" "^7.15.4" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/helper-compilation-targets@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz#cf6d94f30fbefc139123e27dd6b02f65aeedb7b9" + integrity sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ== + dependencies: + "@babel/compat-data" "^7.15.0" + "@babel/helper-validator-option" "^7.14.5" + browserslist "^4.16.6" + semver "^6.3.0" + "@babel/helper-function-name@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz#89e2c474972f15d8e233b52ee8c480e2cfcd50c4" @@ -27,6 +81,15 @@ "@babel/template" "^7.14.5" "@babel/types" "^7.14.5" +"@babel/helper-function-name@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz#845744dafc4381a4a5fb6afa6c3d36f98a787ebc" + integrity sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw== + dependencies: + "@babel/helper-get-function-arity" "^7.15.4" + "@babel/template" "^7.15.4" + "@babel/types" "^7.15.4" + "@babel/helper-get-function-arity@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz#25fbfa579b0937eee1f3b805ece4ce398c431815" @@ -34,6 +97,13 @@ dependencies: "@babel/types" "^7.14.5" +"@babel/helper-get-function-arity@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz#098818934a137fce78b536a3e015864be1e2879b" + integrity sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA== + dependencies: + "@babel/types" "^7.15.4" + "@babel/helper-hoist-variables@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz#e0dd27c33a78e577d7c8884916a3e7ef1f7c7f8d" @@ -41,6 +111,65 @@ dependencies: "@babel/types" "^7.14.5" +"@babel/helper-hoist-variables@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz#09993a3259c0e918f99d104261dfdfc033f178df" + integrity sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA== + dependencies: + "@babel/types" "^7.15.4" + +"@babel/helper-member-expression-to-functions@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz#bfd34dc9bba9824a4658b0317ec2fd571a51e6ef" + integrity sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA== + dependencies: + "@babel/types" "^7.15.4" + +"@babel/helper-module-imports@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz#e18007d230632dea19b47853b984476e7b4e103f" + integrity sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA== + dependencies: + "@babel/types" "^7.15.4" + +"@babel/helper-module-transforms@^7.15.4": + version "7.15.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.7.tgz#7da80c8cbc1f02655d83f8b79d25866afe50d226" + integrity sha512-ZNqjjQG/AuFfekFTY+7nY4RgBSklgTu970c7Rj3m/JOhIu5KPBUuTA9AY6zaKcUvk4g6EbDXdBnhi35FAssdSw== + dependencies: + "@babel/helper-module-imports" "^7.15.4" + "@babel/helper-replace-supers" "^7.15.4" + "@babel/helper-simple-access" "^7.15.4" + "@babel/helper-split-export-declaration" "^7.15.4" + "@babel/helper-validator-identifier" "^7.15.7" + "@babel/template" "^7.15.4" + "@babel/traverse" "^7.15.4" + "@babel/types" "^7.15.6" + +"@babel/helper-optimise-call-expression@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz#f310a5121a3b9cc52d9ab19122bd729822dee171" + integrity sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw== + dependencies: + "@babel/types" "^7.15.4" + +"@babel/helper-replace-supers@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz#52a8ab26ba918c7f6dee28628b07071ac7b7347a" + integrity sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.15.4" + "@babel/helper-optimise-call-expression" "^7.15.4" + "@babel/traverse" "^7.15.4" + "@babel/types" "^7.15.4" + +"@babel/helper-simple-access@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz#ac368905abf1de8e9781434b635d8f8674bcc13b" + integrity sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg== + dependencies: + "@babel/types" "^7.15.4" + "@babel/helper-split-export-declaration@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz#22b23a54ef51c2b7605d851930c1976dd0bc693a" @@ -48,11 +177,37 @@ dependencies: "@babel/types" "^7.14.5" +"@babel/helper-split-export-declaration@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz#aecab92dcdbef6a10aa3b62ab204b085f776e257" + integrity sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw== + dependencies: + "@babel/types" "^7.15.4" + "@babel/helper-validator-identifier@^7.12.11", "@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.9": version "7.14.9" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz#6654d171b2024f6d8ee151bf2509699919131d48" integrity sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g== +"@babel/helper-validator-identifier@^7.15.7": + version "7.15.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" + integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== + +"@babel/helper-validator-option@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" + integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== + +"@babel/helpers@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.15.4.tgz#5f40f02050a3027121a3cf48d497c05c555eaf43" + integrity sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ== + dependencies: + "@babel/template" "^7.15.4" + "@babel/traverse" "^7.15.4" + "@babel/types" "^7.15.4" + "@babel/highlight@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" @@ -72,6 +227,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.0.tgz#b6d6e29058ca369127b0eeca2a1c4b5794f1b6b9" integrity sha512-0v7oNOjr6YT9Z2RAOTv4T9aP+ubfx4Q/OhVtAet7PFDt0t9Oy6Jn+/rfC6b8HJ5zEqrQCiMxJfgtHpmIminmJQ== +"@babel/parser@^7.15.4", "@babel/parser@^7.15.5": + version "7.15.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.7.tgz#0c3ed4a2eb07b165dfa85b3cc45c727334c4edae" + integrity sha512-rycZXvQ+xS9QyIcJ9HXeDWf1uxqlbVFAUq0Rq0dbc50Zb/+wUe/ehyfzGfm9KZZF0kBejYgxltBXocP+gKdL2g== + "@babel/template@^7.14.5", "@babel/template@^7.4.0": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.14.5.tgz#a9bc9d8b33354ff6e55a9c60d1109200a68974f4" @@ -81,6 +241,30 @@ "@babel/parser" "^7.14.5" "@babel/types" "^7.14.5" +"@babel/template@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.15.4.tgz#51898d35dcf3faa670c4ee6afcfd517ee139f194" + integrity sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg== + dependencies: + "@babel/code-frame" "^7.14.5" + "@babel/parser" "^7.15.4" + "@babel/types" "^7.15.4" + +"@babel/traverse@^7.15.4": + version "7.15.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.4.tgz#ff8510367a144bfbff552d9e18e28f3e2889c22d" + integrity sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA== + dependencies: + "@babel/code-frame" "^7.14.5" + "@babel/generator" "^7.15.4" + "@babel/helper-function-name" "^7.15.4" + "@babel/helper-hoist-variables" "^7.15.4" + "@babel/helper-split-export-declaration" "^7.15.4" + "@babel/parser" "^7.15.4" + "@babel/types" "^7.15.4" + debug "^4.1.0" + globals "^11.1.0" + "@babel/traverse@^7.4.3": version "7.15.0" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.0.tgz#4cca838fd1b2a03283c1f38e141f639d60b3fc98" @@ -113,6 +297,14 @@ "@babel/helper-validator-identifier" "^7.14.9" to-fast-properties "^2.0.0" +"@babel/types@^7.15.4", "@babel/types@^7.15.6": + version "7.15.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.6.tgz#99abdc48218b2881c058dd0a7ab05b99c9be758f" + integrity sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig== + dependencies: + "@babel/helper-validator-identifier" "^7.14.9" + to-fast-properties "^2.0.0" + "@jsdevtools/ez-spawn@^3.0.4": version "3.0.4" resolved "https://registry.yarnpkg.com/@jsdevtools/ez-spawn/-/ez-spawn-3.0.4.tgz#5641eb26fee6d31ec29f6788eba849470c52c7ff" @@ -474,6 +666,17 @@ browser-stdout@1.3.1: resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== +browserslist@^4.16.6: + version "4.17.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.1.tgz#a98d104f54af441290b7d592626dd541fa642eb9" + integrity sha512-aLD0ZMDSnF4lUt4ZDNgqi5BUn9BZ7YdQdI/cYlILrhdSSZJLU9aNZoD5/NBmM4SK34APB2e83MOsRt1EnkuyaQ== + dependencies: + caniuse-lite "^1.0.30001259" + electron-to-chromium "^1.3.846" + escalade "^3.1.1" + nanocolors "^0.1.5" + node-releases "^1.1.76" + buffer@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" @@ -507,6 +710,11 @@ camelcase@^5.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +caniuse-lite@^1.0.30001259: + version "1.0.30001259" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001259.tgz#ae21691d3da9c4be6144403ac40f71d9f6efd790" + integrity sha512-V7mQTFhjITxuk9zBpI6nYsiTXhcPe05l+364nZjK7MFK/E7ibvYBSAXr4YcA6oPR8j3ZLM/LN+lUqUVAQEUZFg== + cardinal@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/cardinal/-/cardinal-2.1.1.tgz#7cc1055d822d212954d07b085dea251cc7bc5505" @@ -749,7 +957,7 @@ console-control-strings@^1.0.0, console-control-strings@~1.1.0: resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= -convert-source-map@^1.6.0: +convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.8.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== @@ -899,6 +1107,11 @@ dot@^1.1.2: resolved "https://registry.yarnpkg.com/dot/-/dot-1.1.3.tgz#351360e00a748bce9a1f8f27c00c394a7e4e1e9f" integrity sha512-/nt74Rm+PcfnirXGEdhZleTwGC2LMnuKTeeTIlI82xb5loBBoXNYzr2ezCroPSMtilK8EZIfcNZwOcHN+ib1Lg== +electron-to-chromium@^1.3.846: + version "1.3.847" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.847.tgz#d3184fec571dae68f502720dbb74572cd0012414" + integrity sha512-u2VQOKACHgflbu9TAAiJ9UPaQj6AD0dijL79wdqTAzFz86GXSTTPyaoxP3gZflH+r0DAlY0jD4G0TqzHzLN6Vg== + emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -963,7 +1176,7 @@ eslint-ast-utils@^1.0.0: lodash.get "^4.4.2" lodash.zip "^4.2.0" -eslint-config-oclif@^3.1: +eslint-config-oclif@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/eslint-config-oclif/-/eslint-config-oclif-3.1.0.tgz#cbc207ced09e31676dcee2f724fc509cd20eb0bd" integrity sha512-Tqgy43cNXsSdhTLWW4RuDYGFhV240sC4ISSv/ZiUEg/zFxExSEUpRE6J+AGnkKY9dYwIW4C9b2YSUVv8z/miMA== @@ -1034,6 +1247,14 @@ eslint-scope@^4.0.3: esrecurse "^4.1.0" estraverse "^4.1.1" +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + eslint-utils@^1.3.1, eslint-utils@^1.4.2: version "1.4.3" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" @@ -1046,6 +1267,11 @@ eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== +eslint-visitor-keys@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + eslint@^5.13: version "5.16.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea" @@ -1109,7 +1335,7 @@ esquery@^1.0.1: dependencies: estraverse "^5.1.0" -esrecurse@^4.1.0: +esrecurse@^4.1.0, esrecurse@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== @@ -1378,6 +1604,11 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + get-caller-file@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" @@ -1429,7 +1660,19 @@ glob@7.1.2: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.2, glob@^7.1.3: +glob@^7.1.2: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.1.3: version "7.1.7" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== @@ -1848,6 +2091,13 @@ json-stringify-safe@^5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= +json5@^2.1.2: + version "2.2.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" + integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== + 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" @@ -2156,6 +2406,11 @@ mute-stream@0.0.8: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== +nanocolors@^0.1.5: + version "0.1.6" + resolved "https://registry.yarnpkg.com/nanocolors/-/nanocolors-0.1.6.tgz#bc2350d3edfdbfadd7ac018c855ae7c13905a6ad" + integrity sha512-2pvTw6vYRaBLGir2xR7MxaJtyWkrn+C53EpW8yPotG+pdAwBvt0Xwk4VJ6VHLY0aLthVZPvDfm9TdZvrvAm5UQ== + napi-build-utils@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" @@ -2220,6 +2475,11 @@ node-fetch@^2.6.1: resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== +node-releases@^1.1.76: + version "1.1.76" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.76.tgz#df245b062b0cafbd5282ab6792f7dccc2d97f36e" + integrity sha512-9/IECtNr8dXNmPWmFXepT0/7o5eolGesHUa3mtr0KlgnCvnZxwh2qensKL42JJY2vQKC3nIBXetFAqR+PW1CmA== + noop-logger@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2" @@ -2800,7 +3060,7 @@ secure-keys@^1.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@^6.0.0: +semver@^6.0.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==