diff --git a/CHANGELOG.md b/CHANGELOG.md index 2bcfba1d5..5e88d4b77 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -## v3.20.0 - [TBD](https://github.com/lando/cli/releases/tag/3.20.0) +## v3.20.0 - [September 22, 2023](https://github.com/lando/cli/releases/tag/3.20.0) ### CLI diff --git a/lib/art.js b/lib/art.js index a7f2f42e1..70ce7acbe 100644 --- a/lib/art.js +++ b/lib/art.js @@ -136,7 +136,7 @@ exports.appStart = ({name, phase = 'pre', warnings = {}} = {}) => { '', chalk.yellow(niceFont('Warning!', 'Small Slant')), '', - `Your app started up but we detected some things you ma${italicize('may')}y wish to investigate.`, + `Your app started up but we detected some things you ${italicize('may')} wish to investigate.`, '', ]; diff --git a/lib/cli-next.js b/lib/cli-next.js index e04d0229f..8887bdb4b 100644 --- a/lib/cli-next.js +++ b/lib/cli-next.js @@ -259,6 +259,7 @@ module.exports = class Cli { const data = {options: argv, inquiry: require('./formatters').getInteractive(task.options, argv)}; // run our pre command hook + // @TODO: add command names and such? await this.runHook('prerun', {id: argv._[0], data, cli: this, task}); // queue up an extended debugger diff --git a/lib/cli.js b/lib/cli.js index 01e1a86b5..19430c01e 100644 --- a/lib/cli.js +++ b/lib/cli.js @@ -196,15 +196,6 @@ module.exports = class Cli { return formatters.formatOptions(omit); } - // @TODO: throw error instead of false? - getRenderer(type = 'default') { - try { - return require(path.resolve(__dirname, '..', 'renderers', type)); - } catch (error) { - throw new Error(`Could not find ${type} renderer`); - } - } - /** * Cli wrapper for error handler * @@ -496,6 +487,59 @@ module.exports = class Cli { this.init(yargs, tasks, config, userConfig); } + // run a listr tasks list + async runTaskList(tasks, { + ctx = {}, + renderer = 'default', + rendererDebug = 'debug', + rendererForce = false, + rendererOptions = {}, + rendererDebugOptions = {}, + listrOptions = {}, + } = {}) { + // get the bossman + const {Manager} = require('listr2'); + + // if rendererForce === false then reset the renderer if we are in debug mode + if (rendererForce === false + && (this.logLevel > 1 + || this.logLevel === 'info' + || this.logLevel === 'verbose' + || this.logLevel === 'debug' + || this.logLevel === 'silly' + )) { + renderer = rendererDebug; + rendererOptions = rendererDebugOptions; + } + + // attempt to reset the renderer if its a string and has a renderer we can load + if (typeof renderer === 'string' && fs.existsSync(path.resolve(__dirname, '..', 'renderers', `${renderer}.js`))) { + renderer = require(path.resolve(__dirname, '..', 'renderers', renderer)); + } + + const defaults = { + ctx, + renderer, + collectErrors: true, + concurrent: true, + showErrorMessage: false, + exitOnError: false, + rendererOptions: { + log: require('@lando/core-next/debug')('lando').extend('cli'), + collapseSubtasks: false, + suffixRetries: false, + showErrorMessage: false, + }, + }; + + // construct the runner + const runner = new Manager(_.merge({}, defaults, {...listrOptions, rendererOptions})); + // add the tasks + runner.add(tasks); + // run + return runner.runAll(); + } + /* * Toggle a toggle */ diff --git a/lib/listr.js b/lib/listr.js deleted file mode 100644 index 246cbb75a..000000000 --- a/lib/listr.js +++ /dev/null @@ -1,46 +0,0 @@ -'use strict'; - -const _ = require('lodash'); -const chalk = require('chalk'); -const delay = require('delay'); - -exports.checkToListrTasks = ({ - args, - type, - title, - service, - test = () => {}, - skip = false, - retry = 10, -} = {}) => ({ - title: chalk.grey(title || `${type} ${args[0]}`), - retry, - task: (ctx, task) => { - // if skip then we are done - if (skip === true) { - task.title = chalk.yellow(title); - task.skip(); - - // otherwise try to actually test - } else { - return test(...args).then(response => { - const code = `[${_.get(response, 'lando.code', 'UNKNOWN')}]`; - task.title = `${chalk.green(title)} ${chalk.dim(code)}`; - }) - .catch(error => { - // assess retry situation - const {count} = task.isRetrying(); - const color = count === retry ? 'red' : 'grey'; - const rm = count > 0 && count < retry ? `${count}/${retry} ` : ''; - const code = `[${error.lando.code}]`; - const message = count === retry ? ` - ${_.upperCase(error.message)}` : ''; - task.title = `${chalk[color](title)} ${chalk.dim(rm)}${chalk.dim(code)}${chalk.dim(message)}`; - - // delay and backoff for UX purposes - return delay(3000 + (100 * count)).then(() => { - throw error; - }); - }); - } - }, -}); diff --git a/package.json b/package.json index c6a05e1c2..fc927a760 100644 --- a/package.json +++ b/package.json @@ -108,7 +108,7 @@ "@lando/argv": "^1.1.0", "@lando/backdrop": "0.8.0", "@lando/compose": "0.7.0", - "@lando/core": "3.17.2", + "@lando/core": "github:lando/core#dockerfile-build", "@lando/core-next": "github:lando/core-next#183d75d", "@lando/dotnet": "^0.7.2", "@lando/drupal": "0.10.0", @@ -146,13 +146,12 @@ "cli-table": "^0.3.1", "cli-table3": "^0.5.1", "debug": "^4.3.4", - "delay": "^5.0.0", "figlet": "^1.1.1", "inquirer": "^6.2.1", "inquirer-autocomplete-prompt": "^1.0.1", "is-docker": "^2", "is-root": "^2", - "listr2": "^5.0.7", + "listr2": "^6.6.1", "lodash": "^4.17.21", "mkdirp": "^0.5.1", "sudo-block": "^2.0.0", diff --git a/renderers/debug.js b/renderers/debug.js new file mode 100644 index 000000000..6d3839733 --- /dev/null +++ b/renderers/debug.js @@ -0,0 +1,31 @@ +'use strict'; + +const {Listr} = require('listr2'); + +// we do this to coax out the default renderer class so we can extend it +const listr = new Listr([], {renderer: 'verbose', fallbackRenderer: 'verbose'}); + +class LandoDebugRenderer extends listr.rendererClass { + static debug = require('debug')('lando:debug-renderer'); + + constructor(tasks, options, $renderHook) { + super(tasks, options, $renderHook); + this.options.level = 0; + const debug = options.log || LandoDebugRenderer.debug; + + // update the logger with our debug wrapper + this.logger.log = (level, message, options) => { + const output = debug(this.logger.format(level, message, options)); + + if (output && this.logger.options.toStderr.includes(level)) { + this.logger.process.toStderr(output); + return; + } + + if (output) this.logger.process.toStdout(output); + }; + } +} + +module.exports = LandoDebugRenderer; + diff --git a/renderers/default.js b/renderers/default.js deleted file mode 100644 index 72d09fd87..000000000 --- a/renderers/default.js +++ /dev/null @@ -1,42 +0,0 @@ -'use strict'; - -const {EOL} = require('os'); -const {Listr} = require('listr2'); - -// we do this to coax out the default renderer class so we can extend it -const listr = new Listr([], {renderer: 'default', nonTTYRenderer: 'default'}); - -class LandoDefaultRenderer extends listr.rendererClass { - constructor(tasks, options, $renderHook) { - super(tasks, options, $renderHook); - this.options.level = options.level || 0; - } - - createRender(options) { - options = { - ...{ - tasks: true, - bottomBar: true, - prompt: true, - }, - ...options, - }; - - const render = []; - - const renderTasks = this.multiLineRenderer(this.tasks, this.options.level); - const renderBottomBar = this.renderBottomBar(); - const renderPrompt = this.renderPrompt(); - - if (options.tasks && renderTasks?.trim().length > 0) render.push(renderTasks); - - if (options.bottomBar && renderBottomBar?.trim().length > 0) render.push((render.length > 0 ? EOL : '') + renderBottomBar); - - if (options.prompt && renderPrompt?.trim().length > 0) render.push((render.length > 0 ? EOL : '') + renderPrompt); - - return render.length > 0 ? render.join(EOL) : ''; - } -} - -module.exports = LandoDefaultRenderer; - diff --git a/renderers/lando.js b/renderers/lando.js new file mode 100644 index 000000000..4cde9c7bd --- /dev/null +++ b/renderers/lando.js @@ -0,0 +1,46 @@ +'use strict'; + +const {EOL} = require('os'); +const {Listr} = require('listr2'); + +// we do this to coax out the default renderer class so we can extend it +const listr = new Listr([], {renderer: 'default', fallbackRenderer: 'default'}); + +class LandoRenderer extends listr.rendererClass { + constructor(tasks, options, $renderHook) { + super(tasks, options, $renderHook); + this.options.level = options.level || 0; + } + + create(options) { + options = { + tasks: true, + bottomBar: true, + prompt: true, + ...options, + }; + + const render = []; + + const renderTasks = this.renderer(this.tasks, this.options.level); + const renderBottomBar = this.renderBottomBar(); + const renderPrompt = this.renderPrompt(); + + if (options.tasks && renderTasks.length > 0) render.push(...renderTasks); + + if (options.bottomBar && renderBottomBar.length > 0) { + if (render.length > 0) render.push(''); + render.push(...renderBottomBar); + } + + if (options.prompt && renderPrompt.length > 0) { + if (render.length > 0) render.push(''); + render.push(...renderPrompt); + } + + return render.join(EOL); + } +} + +module.exports = LandoRenderer; + diff --git a/yarn.lock b/yarn.lock index 64d3fd484..9de35b3ef 100644 --- a/yarn.lock +++ b/yarn.lock @@ -631,10 +631,9 @@ winston "2.4.5" yaml "^2.1.1" -"@lando/core@3.17.2": +"@lando/core@github:lando/core#dockerfile-build": version "3.17.2" - resolved "https://registry.yarnpkg.com/@lando/core/-/core-3.17.2.tgz#b8c29197985f865c6939652ee873f56f76faf7b5" - integrity sha512-fkVniOElBx4TWY+Bp4Oz76+iciqVsu+eNkEN3jDzexsEqynJwNyMtaj2ZBizVEJbqcsZeNVKNCKFtqqS19Uk8g== + resolved "https://codeload.github.com/lando/core/tar.gz/f0bc97610ff61b303e660f3d93af41ff7ccd3e1e" dependencies: axios "0.21.4" bluebird "^3.4.1" @@ -642,6 +641,9 @@ copy-dir "^0.4.0" dayjs "^1.8.25" debug "^4.3.4" + delay "^5" + dockerfile-generator "^5.0.0" + dockerfile-utils "^0.15.0" dockerode "^2.4.2" github "^12.0.0" glob "^7.1.3" @@ -649,14 +651,15 @@ is-class "^0.0.9" js-yaml "^3.4.6" jsonfile "^2.4.0" - listr2 "^5.0.7" lodash "^4.17.21" mkdirp "^0.5.1" + nanoid "^3" node-cache "^4.1.1" object-hash "^1.1.8" rimraf "^4.1.1" semver "^7.3.2" shelljs "^0.8.4" + slugify "^1.6.5" string-argv "0.1.1" through "^2.3.8" transliteration "^2.2.0" @@ -2092,13 +2095,20 @@ ansi-escapes@^3.1.0, ansi-escapes@^3.2.0: resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== -ansi-escapes@^4.3.0, ansi-escapes@^4.3.1, ansi-escapes@^4.3.2: +ansi-escapes@^4.3.1, ansi-escapes@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: type-fest "^0.21.3" +ansi-escapes@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-5.0.0.tgz#b6a0caf0eef0c41af190e9a749e0c00ec04bb2a6" + integrity sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA== + dependencies: + type-fest "^1.0.2" + ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -2143,7 +2153,7 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0, ansi-styles@^4.3.0: dependencies: color-convert "^2.0.1" -ansi-styles@^6.1.0: +ansi-styles@^6.0.0, ansi-styles@^6.1.0: version "6.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== @@ -2810,13 +2820,6 @@ cli-cursor@^2.1.0: dependencies: restore-cursor "^2.0.0" -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - cli-cursor@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-4.0.0.tgz#3cecfe3734bf4fe02a8361cbdc0f6fe28c6a57ea" @@ -2853,13 +2856,13 @@ cli-table@^0.3.1: dependencies: colors "1.0.3" -cli-truncate@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" - integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== +cli-truncate@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-3.1.0.tgz#3f23ab12535e3d73e839bb43e73c9de487db1389" + integrity sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA== dependencies: - slice-ansi "^3.0.0" - string-width "^4.2.0" + slice-ansi "^5.0.0" + string-width "^5.0.0" cli-width@^2.0.0: version "2.2.1" @@ -2950,10 +2953,10 @@ color-support@^1.1.3: resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== -colorette@^2.0.19: - version "2.0.19" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" - integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== +colorette@^2.0.20: + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== colors@1.0.3, colors@1.0.x: version "1.0.3" @@ -3265,7 +3268,7 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" -delay@^5.0.0: +delay@^5: version "5.0.0" resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== @@ -3332,6 +3335,30 @@ docker-modem@^1.0.8: readable-stream "~1.0.26-4" split-ca "^1.0.0" +dockerfile-ast@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/dockerfile-ast/-/dockerfile-ast-0.6.1.tgz#1dc1a8c751b677c6582547bc1834b05b333ff5f4" + integrity sha512-m3rH2qHHU2pSTCppXgJT+1KLxhvkdROOxVPof5Yz4IPGSw6K+x0B0/RFdYgXN5zsIUTlbOSRyfDCv3/uVhnNmg== + dependencies: + vscode-languageserver-textdocument "^1.0.8" + vscode-languageserver-types "^3.17.3" + +dockerfile-generator@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/dockerfile-generator/-/dockerfile-generator-5.0.1.tgz#8ab8c91719c525ff54c3496cd796e62daff77ccb" + integrity sha512-qb4LC6Ya8Uj4i6RwsaAGEuN6sfRekFMULGsplx6RUYBZzrt5dwghg0pFFAPzUhokffOqlezgzaBvWDlPPaXHRg== + dependencies: + jsonschema "^1.4.0" + +dockerfile-utils@^0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/dockerfile-utils/-/dockerfile-utils-0.15.0.tgz#e4f73488a358330f00c3d3909243fb9cb9c92bc7" + integrity sha512-hV2OExB797C3/GlOloywmMZzu3MPmzMziGuCaPWh/m9qHgTyfN4+EI3b6xhHDXy78PU0GqwvHnZVX7wfpqOCkg== + dependencies: + dockerfile-ast "0.6.1" + vscode-languageserver-textdocument "^1.0.8" + vscode-languageserver-types "^3.17.3" + dockerode@^2.4.2: version "2.5.8" resolved "https://registry.yarnpkg.com/dockerode/-/dockerode-2.5.8.tgz#1b661e36e1e4f860e25f56e0deabe9f87f1d0acc" @@ -3797,6 +3824,11 @@ event-target-shim@^5.0.0: resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== +eventemitter3@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + events@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" @@ -5010,6 +5042,11 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-fullwidth-code-point@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88" + integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== + is-glob@^2.0.0, is-glob@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" @@ -5359,6 +5396,11 @@ jsonparse@^1.2.0, jsonparse@^1.3.1: resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== +jsonschema@^1.4.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.4.1.tgz#cc4c3f0077fb4542982973d8a083b6b34f482dab" + integrity sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ== + jsprim@^1.2.2: version "1.4.2" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" @@ -5466,19 +5508,17 @@ linkify-it@^4.0.1: dependencies: uc.micro "^1.0.1" -listr2@^5.0.7: - version "5.0.7" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-5.0.7.tgz#de69ccc4caf6bea7da03c74f7a2ffecf3904bd53" - integrity sha512-MD+qXHPmtivrHIDRwPYdfNkrzqDiuaKU/rfBcec3WMyMF3xylQj3jMq344OtvQxz7zaCFViRAeqlr2AFhPvXHw== +listr2@^6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-6.6.1.tgz#08b2329e7e8ba6298481464937099f4a2cd7f95d" + integrity sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg== dependencies: - cli-truncate "^2.1.0" - colorette "^2.0.19" - log-update "^4.0.0" - p-map "^4.0.0" + cli-truncate "^3.1.0" + colorette "^2.0.20" + eventemitter3 "^5.0.1" + log-update "^5.0.1" rfdc "^1.3.0" - rxjs "^7.8.0" - through "^2.3.8" - wrap-ansi "^7.0.0" + wrap-ansi "^8.1.0" load-json-file@^1.0.0: version "1.1.0" @@ -5561,15 +5601,16 @@ log-symbols@^5.1.0: chalk "^5.0.0" is-unicode-supported "^1.1.0" -log-update@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" - integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== +log-update@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-5.0.1.tgz#9e928bf70cb183c1f0c9e91d9e6b7115d597ce09" + integrity sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw== dependencies: - ansi-escapes "^4.3.0" - cli-cursor "^3.1.0" - slice-ansi "^4.0.0" - wrap-ansi "^6.2.0" + ansi-escapes "^5.0.0" + cli-cursor "^4.0.0" + slice-ansi "^5.0.0" + strip-ansi "^7.0.1" + wrap-ansi "^8.0.1" lolex@^2.2.0: version "2.7.5" @@ -7389,14 +7430,6 @@ restore-cursor@^2.0.0: onetime "^2.0.0" signal-exit "^3.0.2" -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - restore-cursor@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-4.0.0.tgz#519560a4318975096def6e609d44100edaa4ccb9" @@ -7479,13 +7512,6 @@ rxjs@^6.4.0, rxjs@^6.6.2: dependencies: tslib "^1.9.0" -rxjs@^7.8.0: - version "7.8.0" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.0.tgz#90a938862a82888ff4c7359811a595e14e1e09a4" - integrity sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg== - dependencies: - tslib "^2.1.0" - safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" @@ -7680,15 +7706,6 @@ slash@^4.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== -slice-ansi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" - integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - slice-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" @@ -7698,6 +7715,14 @@ slice-ansi@^4.0.0: astral-regex "^2.0.0" is-fullwidth-code-point "^3.0.0" +slice-ansi@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-5.0.0.tgz#b73063c57aa96f9cd881654b15294d95d285c42a" + integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== + dependencies: + ansi-styles "^6.0.0" + is-fullwidth-code-point "^4.0.0" + slide@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" @@ -7934,7 +7959,7 @@ string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string-width@^5.0.1, string-width@^5.1.2: +string-width@^5.0.0, string-width@^5.0.1, string-width@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== @@ -8330,7 +8355,7 @@ tslib@^2.0.0, tslib@^2.3.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== -tslib@^2.1.0, tslib@^2.4.1: +tslib@^2.4.1: version "2.5.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== @@ -8561,6 +8586,16 @@ vite@~3.1.8: optionalDependencies: fsevents "~2.3.2" +vscode-languageserver-textdocument@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.8.tgz#9eae94509cbd945ea44bca8dcfe4bb0c15bb3ac0" + integrity sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q== + +vscode-languageserver-types@^3.17.3: + version "3.17.4" + resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.4.tgz#0b422ecbc305f364f6579ba9e32b1d7ddb7ca789" + integrity sha512-9YXi5pA3XF2V+NUQg6g+lulNS0ncRCKASYdK3Cs7kiH9sVFXWq27prjkC/B8M/xJLRPPRSPCHVMuBTgRNFh2sQ== + vue-demi@*: version "0.13.11" resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.13.11.tgz#7d90369bdae8974d87b1973564ad390182410d99" @@ -8727,7 +8762,7 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^8.1.0: +wrap-ansi@^8.0.1, wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==