diff --git a/.eslintrc.js b/.eslintrc.js index def4988a60d7819e9a89710e88d7e76309948406..7e5e79deec20ae4dabbc0fcb026b44a1e054156f 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -208,6 +208,7 @@ module.exports = { 'error', { devDependencies: true }, ], + 'no-console': 'off', }, }, { diff --git a/lib/config-validator.ts b/lib/config-validator.ts index 4cd144ed57dedbeb014864e3d62d3080863b3503..00d3176fc5917ee084b03b3ebe8dd4618dbabceb 100644 --- a/lib/config-validator.ts +++ b/lib/config-validator.ts @@ -16,8 +16,6 @@ import { let returnVal = 0; -/* eslint-disable no-console */ - async function validate( desc: string, config: RenovateConfig, @@ -131,6 +129,7 @@ type PackageJson = { } logger.info('Config validated successfully'); })().catch((e) => { + // eslint-disable-next-line no-console console.error(e); process.exit(99); }); diff --git a/package.json b/package.json index b985c5a7d48779d4a151e216a9dd58e27907e329..ea64cdbc034046d9e63a018d4151574dc38bba75 100644 --- a/package.json +++ b/package.json @@ -266,6 +266,7 @@ "@types/fs-extra": "11.0.1", "@types/git-url-parse": "9.0.1", "@types/github-url-from-git": "1.5.1", + "@types/glob": "8.1.0", "@types/global-agent": "2.1.1", "@types/ini": "1.3.31", "@types/js-yaml": "4.0.5", @@ -283,7 +284,7 @@ "@types/semver": "7.3.13", "@types/semver-stable": "3.0.0", "@types/semver-utils": "1.1.1", - "@types/shelljs": "0.8.12", + "@types/tar": "6.1.4", "@types/traverse": "0.6.32", "@types/url-join": "4.0.1", "@types/validate-npm-package-name": "4.0.0", @@ -323,8 +324,8 @@ "npm-run-all": "4.1.5", "rimraf": "5.0.0", "semantic-release": "21.0.1", - "shelljs": "0.8.5", "strip-ansi": "6.0.1", + "tar": "6.1.13", "tmp-promise": "3.0.3", "ts-jest": "29.1.0", "ts-node": "10.9.1", diff --git a/tools/check-fenced-code.mjs b/tools/check-fenced-code.mjs index 4ecb8538f17a642f7d7a6085cfedc1d62dd6f398..cc9f6a1df55cca9233aa8014e277fb14f4d8c96a 100644 --- a/tools/check-fenced-code.mjs +++ b/tools/check-fenced-code.mjs @@ -2,7 +2,6 @@ import { promisify } from 'node:util'; import fs from 'fs-extra'; import g from 'glob'; import MarkdownIt from 'markdown-it'; -import shell from 'shelljs'; const glob = promisify(g); @@ -30,11 +29,11 @@ function checkValidJson(file, token) { } catch (err) { issues += 1; if (process.env.CI) { - shell.echo( + console.log( `::error file=${file},line=${start},endLine=${end},title=${errorTitle}::${err.message}. ${errorBody}` ); } else { - shell.echo( + console.log( `${errorTitle} (${file} lines ${start}-${end}): ${err.message}` ); } @@ -64,9 +63,9 @@ await (async () => { } if (issues) { - shell.echo( + console.error( `${issues} issues found. ${errorBody} See above for lines affected.` ); - shell.exit(1); + process.exit(1); } })(); diff --git a/tools/check-git-version.mjs b/tools/check-git-version.mjs index bd1b328035da9ea765ec6f527d730e17a4c39cc5..e9470d14fd1be0b4f1eaf4d692bb32c4c7c25034 100644 --- a/tools/check-git-version.mjs +++ b/tools/check-git-version.mjs @@ -1,5 +1,4 @@ import semver from 'semver'; -import shell from 'shelljs'; import { simpleGit } from 'simple-git'; const GIT_MINIMUM_VERSION = '2.33.0'; @@ -11,7 +10,7 @@ await (async () => { const gitVersion = `${major}.${minor}.${patch}`; if (!installed || semver.lt(gitVersion, GIT_MINIMUM_VERSION)) { if (process.env.CI) { - shell.echo( + console.log( `::error ::Minimum Git version ${GIT_MINIMUM_VERSION} is required, found version '${gitVersion}'.` ); } else { @@ -20,10 +19,10 @@ await (async () => { ); } } - shell.echo('Found git version: ', gitVersion); + console.log('Found git version: ', gitVersion); process.exit(0); } catch (err) { - shell.echo('ERROR:', err.message); + console.log('ERROR:', err.message); process.exit(1); } })(); diff --git a/tools/check-re2.mjs b/tools/check-re2.mjs index 2b32b9f76c0529a2fc67ef59b61a55157d8d037f..861206f74fa9d617a4826c0289674e9ecffece12 100644 --- a/tools/check-re2.mjs +++ b/tools/check-re2.mjs @@ -1,14 +1,11 @@ -import shell from 'shelljs'; - await (async () => { - shell.echo('-n', 'Checking re2 ... '); + console.log('-n', 'Checking re2 ... '); try { const { default: RE2 } = await import('re2'); new RE2('.*').exec('test'); - shell.echo(`ok.`); + console.log(`ok.`); } catch (e) { - shell.echo(`error.\n${e}`); - shell.echo(); - shell.exit(1); + console.error(`error.\n${e}`); + process.exit(1); } })(); diff --git a/tools/clean-cache.mjs b/tools/clean-cache.mjs index 6e7a921f561e2f705b7ffd9eaf98860769ab5a2a..afcb31319085d7d9eb39a4bbb8b7651eff2e7d3c 100644 --- a/tools/clean-cache.mjs +++ b/tools/clean-cache.mjs @@ -5,7 +5,6 @@ import upath from 'upath'; await (async () => { const tmpDir = process.env.RENOVATE_TMPDIR ?? tmpdir(); const renovateDir = upath.join(tmpDir, 'renovate'); - // eslint-disable-next-line no-console console.log('Removing ' + renovateDir); await remove(renovateDir); })(); diff --git a/tools/dispatch-release.mjs b/tools/dispatch-release.mjs index 0d0f5545feb7cb9cba98ed3865a36df6f3912870..c8cb6f62c9573a2c83b955794ead3e9319d7624f 100644 --- a/tools/dispatch-release.mjs +++ b/tools/dispatch-release.mjs @@ -1,16 +1,15 @@ import got from 'got'; -import shell from 'shelljs'; import { options } from './utils/options.mjs'; const version = options.release; const tag = options.tag || 'latest'; const dry = options.dryRun; -shell.echo(`Dispatching version: ${version}`); +console.log(`Dispatching version: ${version}`); (async () => { if (dry) { - shell.echo('DRY-RUN: done.'); + console.log('DRY-RUN: done.'); return; } await got( @@ -35,5 +34,5 @@ shell.echo(`Dispatching version: ${version}`); ); })().catch((e) => { // Ignore for now - shell.echo(e.toString()); + console.warn(e.toString()); }); diff --git a/tools/generate-docs.ts b/tools/generate-docs.ts index f19869daf342b2f86e94cc52df1cdbc0607902b8..4ef4a1af47b5970d1e200adeae46e1db912badda 100644 --- a/tools/generate-docs.ts +++ b/tools/generate-docs.ts @@ -1,5 +1,6 @@ import { ERROR } from 'bunyan'; -import shell from 'shelljs'; +import fs from 'fs-extra'; +import * as tar from 'tar'; import { getProblems, logger } from '../lib/logger'; import { generateConfig } from './docs/config'; import { generateDatasources } from './docs/datasources'; @@ -22,20 +23,13 @@ process.on('unhandledRejection', (err) => { (async () => { try { const dist = 'tmp/docs'; - let r: shell.ShellString; logger.info('generating docs'); - r = shell.mkdir('-p', `${dist}/`); - if (r.code) { - return; - } + await fs.mkdir(`${dist}/`, { recursive: true }); logger.info('* static'); - r = shell.cp('-r', 'docs/usage/.', `${dist}`); - if (r.code) { - return; - } + await fs.copy('docs/usage/.', `${dist}`); logger.info('* fetching open GitHub issues'); const openItems = await getOpenGitHubItems(); @@ -79,16 +73,16 @@ process.on('unhandledRejection', (err) => { logger.info('* json-schema'); await generateSchema(dist); - r = shell.exec('tar -czf ./tmp/docs.tgz -C ./tmp/docs .'); - if (r.code) { - return; - } + await tar.create( + { file: './tmp/docs.tgz', cwd: './tmp/docs', gzip: true }, + ['.'] + ); } catch (err) { logger.error({ err }, 'Unexpected error'); } finally { const loggerErrors = getProblems().filter((p) => p.level >= ERROR); if (loggerErrors.length) { - shell.exit(1); + process.exit(1); } } })(); diff --git a/tools/generate-imports.mjs b/tools/generate-imports.mjs index 755b3b687a06836346342f769e6d8a1be9e878e7..3e60f97e3ff44243e6de2fde28cfeb1e215c8869 100644 --- a/tools/generate-imports.mjs +++ b/tools/generate-imports.mjs @@ -3,22 +3,21 @@ import fs from 'fs-extra'; import _glob from 'glob'; import hasha from 'hasha'; import minimatch from 'minimatch'; -import shell from 'shelljs'; import upath from 'upath'; const glob = util.promisify(_glob); -shell.echo('generating imports'); +console.log('generating imports'); const newFiles = new Set(); if (!fs.existsSync('lib')) { - shell.echo('> missing sources'); - shell.exit(0); + console.log('> missing sources'); + process.exit(0); } if (!fs.existsSync('data')) { - shell.echo('> missing data folder'); - shell.exit(0); + console.log('> missing data folder'); + process.exit(0); } /** @@ -124,7 +123,7 @@ async function generateData() { const rawFileContent = await fs.readFile(file, 'utf8'); const value = JSON.stringify(rawFileContent); - shell.echo(`> ${key}`); + console.log(`> ${key}`); contentMapAssignments.push(`data.set('${key}', ${value});`); } @@ -140,7 +139,7 @@ async function generateData() { } async function generateHash() { - shell.echo('generating hashes'); + console.log('generating hashes'); try { const hashMap = `export const hashMap = new Map<string, string>();`; /** @type {string[]} */ @@ -168,7 +167,7 @@ async function generateHash() { [hashMap, hashes.join('\n')].join('\n\n') ); } catch (err) { - shell.echo('ERROR:', err.message); + console.log('ERROR:', err.message); process.exit(1); } } @@ -179,13 +178,12 @@ await (async () => { await generateData(); await generateHash(); await Promise.all( - shell - .find('lib/**/*.generated.ts') + (await glob('lib/**/*.generated.ts')) .filter((f) => !newFiles.has(f)) .map((file) => fs.remove(file)) ); } catch (e) { - shell.echo(e.toString()); - shell.exit(1); + console.log(e.toString()); + process.exit(1); } })(); diff --git a/tools/generate-schema.ts b/tools/generate-schema.ts index fb7e3c27df5e92eda8ca33a309935be5548afd5e..ad897eab296e4c2342597f8cb8ec5eb787e85c90 100644 --- a/tools/generate-schema.ts +++ b/tools/generate-schema.ts @@ -1,5 +1,4 @@ import { ERROR } from 'bunyan'; -import shell from 'shelljs'; import { getProblems, logger } from '../lib/logger'; import { generateSchema } from './docs/schema'; @@ -22,7 +21,7 @@ process.on('unhandledRejection', (err) => { } finally { const loggerErrors = getProblems().filter((p) => p.level >= ERROR); if (loggerErrors.length) { - shell.exit(1); + process.exit(1); } } })(); diff --git a/tools/release.mjs b/tools/release.mjs index 748028a26ba2d00a6acd8bfd42d73e43a7846eeb..87d7e9f1ed375cde69eccd144f0f916b549afb12 100644 --- a/tools/release.mjs +++ b/tools/release.mjs @@ -1,9 +1,8 @@ -import shell from 'shelljs'; import { options } from './utils/options.mjs'; const version = options.release; -shell.echo(`Publishing version: ${version}`); +console.log(`Publishing version: ${version}`); // eslint-disable-next-line promise/valid-params,@typescript-eslint/no-floating-promises import('./dispatch-release.mjs').catch(); diff --git a/tools/static-data/generate-azure-pipelines-tasks.mjs b/tools/static-data/generate-azure-pipelines-tasks.mjs index 413e70693c443d964805e6880802d8d39b7f7e23..e13d9e5d61a359ccac155d98ea30832bc17d2aa0 100644 --- a/tools/static-data/generate-azure-pipelines-tasks.mjs +++ b/tools/static-data/generate-azure-pipelines-tasks.mjs @@ -3,7 +3,6 @@ import { promisify } from 'node:util'; import fs from 'fs-extra'; import g from 'glob'; import JSON5 from 'json5'; -import shell from 'shelljs'; import Git from 'simple-git'; import path from 'upath'; import { updateJsonFile } from './utils.mjs'; @@ -20,7 +19,7 @@ const localPath = path.join(os.tmpdir(), 'azure-pipelines-tasks'); * 5. After all the `task.json` files have been processed it writes the results to `./data/azure-pipelines-tasks.json` */ await (async () => { - shell.echo('Generating azure pipelines tasks'); + console.log('Generating azure pipelines tasks'); await fs.ensureDir(localPath); const git = Git(localPath); @@ -44,7 +43,7 @@ await (async () => { for (const file of files) { // Find all commits that have the file const revs = (await git.raw(['rev-list', 'HEAD', '--', file])).split('\n'); - shell.echo(`Parsing ${file}`); + console.log(`Parsing ${file}`); for (const rev of revs) { try { // Get the content of the file at the commit @@ -59,8 +58,8 @@ await (async () => { tasks[parsedContent.id.toLowerCase()]?.add(version) ?? new Set([version]); } catch (e) { - shell.echo(`Failed to parse ${file} at ${rev}`); - shell.echo(e.toString()); + console.error(`Failed to parse ${file} at ${rev}`); + console.error(e.toString()); } } } diff --git a/tools/static-data/generate-distro-info.mjs b/tools/static-data/generate-distro-info.mjs index cedd4bacb4ccd5f7e7a90dfa2298c0c6fabe851a..21ccf3c7ecdab19ee144c748bc4d5982ef4a972e 100644 --- a/tools/static-data/generate-distro-info.mjs +++ b/tools/static-data/generate-distro-info.mjs @@ -1,5 +1,4 @@ import got from 'got'; -import shell from 'shelljs'; import { updateJsonFile } from './utils.mjs'; const ubuntuUrl = 'https://debian.pages.debian.net/distro-info-data/ubuntu.csv'; @@ -60,7 +59,7 @@ async function update(url, file) { } await (async () => { - shell.echo('Generating distro info'); + console.log('Generating distro info'); await update(ubuntuUrl, `./data/ubuntu-distro-info.json`); await update(debianUrl, `./data/debian-distro-info.json`); })(); diff --git a/tools/static-data/generate-node-schedule.mjs b/tools/static-data/generate-node-schedule.mjs index b3cd175aa836176611364f6d46ed5dceaf06791d..1f5e09afeecef0b6e7d76277744215caedc37e24 100644 --- a/tools/static-data/generate-node-schedule.mjs +++ b/tools/static-data/generate-node-schedule.mjs @@ -1,12 +1,11 @@ import got from 'got'; -import shell from 'shelljs'; import { updateJsonFile } from './utils.mjs'; const dataUrl = 'https://raw.githubusercontent.com/nodejs/LTS/HEAD/schedule.json'; await (async () => { - shell.echo('Generating node schedule'); + console.log('Generating node schedule'); const { body } = await got(dataUrl); await updateJsonFile('./data/node-js-schedule.json', body); })(); diff --git a/tools/static-data/utils.mjs b/tools/static-data/utils.mjs index 93cdbfd42b3cd919430106615f56f833eafa8280..d344e3fd8f9a54a0bbf8dcbb257c25b66c9a711d 100644 --- a/tools/static-data/utils.mjs +++ b/tools/static-data/utils.mjs @@ -1,5 +1,4 @@ import fs from 'fs-extra'; -import shell from 'shelljs'; /** * Update given file with new provided data. @@ -8,10 +7,10 @@ import shell from 'shelljs'; */ export async function updateJsonFile(file, newData) { try { - shell.echo(`Updating ${file}`); + console.log(`Updating ${file}`); await fs.writeFile(file, newData); } catch (e) { - shell.echo(e.toString()); - shell.exit(1); + console.error(e.toString()); + process.exit(1); } } diff --git a/tools/utils/exec.mjs b/tools/utils/exec.mjs new file mode 100644 index 0000000000000000000000000000000000000000..23b8f37064d21e0d7f97106dfb2c13cefc78ec90 --- /dev/null +++ b/tools/utils/exec.mjs @@ -0,0 +1,13 @@ +import { execSync } from 'node:child_process'; + +const maxBuffer = 20 * 1024 * 1024; + +/** + * Execute a command + * @param {string} cmd + * @returns {string} + */ +export function exec(cmd) { + // args from shelljs + return execSync(cmd, { maxBuffer, stdio: [0, 1, 2] }).toString('utf-8'); +} diff --git a/tools/verify.mjs b/tools/verify.mjs index ebc9a62f544e3d7d85479e7563be2be265577916..804fe9194ec8fcb17d82a3a7d6b774f6ade554a5 100644 --- a/tools/verify.mjs +++ b/tools/verify.mjs @@ -1,8 +1,5 @@ -import shell from 'shelljs'; +import { exec } from './utils/exec.mjs'; -shell.echo(`Verifying ...`); +console.log(`Verifying ...`); -const res = shell.exec(`npm whoami`); -if (res.code !== 0) { - shell.exit(2); -} +exec(`npm whoami`); diff --git a/yarn.lock b/yarn.lock index 6d413acc11dc33cbecc953e414d7d35932ebeb37..175293a8f3a9e61210e4db4544aacb56034b9676 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2916,12 +2916,12 @@ resolved "https://registry.yarnpkg.com/@types/github-url-from-git/-/github-url-from-git-1.5.1.tgz#73b1b6fa0490b903f50e7d7d9897d91769a15d8d" integrity sha512-B/SvVZMrLRUI9mOoguNNz58gV8A5PDtcGIaUe5PYmzAUTsIJ+ZAn/ujwBIuGIU3mRHY5SfV9dyWfnhOWtOVh6A== -"@types/glob@~7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" - integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== +"@types/glob@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-8.1.0.tgz#b63e70155391b0584dce44e7ea25190bbc38f2fc" + integrity sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w== dependencies: - "@types/minimatch" "*" + "@types/minimatch" "^5.1.2" "@types/node" "*" "@types/global-agent@2.1.1": @@ -3051,7 +3051,7 @@ resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.2.tgz#e2ce9d83a613bacf284c7be7d491945e39e1f8e9" integrity sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA== -"@types/minimatch@*": +"@types/minimatch@^5.1.2": version "5.1.2" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== @@ -3135,14 +3135,6 @@ resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91" integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw== -"@types/shelljs@0.8.12": - version "0.8.12" - resolved "https://registry.yarnpkg.com/@types/shelljs/-/shelljs-0.8.12.tgz#79dc9632af7d5ca1b5afb65a6bfc1422d79b5fa0" - integrity sha512-ZA8U81/gldY+rR5zl/7HSHrG2KDfEb3lzG6uCUDhW1DTQE9yC/VBQ45fXnXq8f3CgInfhZmjtdu/WOUlrXRQUg== - dependencies: - "@types/glob" "~7.2.0" - "@types/node" "*" - "@types/sinon@^10.0.10": version "10.0.14" resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-10.0.14.tgz#6bd18b088ea5ef1e5153fa37d0b68e91eff09e22" @@ -3160,6 +3152,14 @@ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== +"@types/tar@6.1.4": + version "6.1.4" + resolved "https://registry.yarnpkg.com/@types/tar/-/tar-6.1.4.tgz#cf8497e1ebdc09212fd51625cd2eb5ca18365ad1" + integrity sha512-Cp4oxpfIzWt7mr2pbhHT2OTXGMAL0szYCzuf8lRWyIMCgsx6/Hfc3ubztuhvzXHXgraTQxyOCmmg7TDGIMIJJQ== + dependencies: + "@types/node" "*" + minipass "^4.0.0" + "@types/tmp@0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@types/tmp/-/tmp-0.2.3.tgz#908bfb113419fd6a42273674c00994d40902c165" @@ -5654,7 +5654,7 @@ glob@^6.0.1: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.1.3, glob@^7.1.4: +glob@^7.1.3, glob@^7.1.4: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -6097,11 +6097,6 @@ internal-slot@^1.0.5: has "^1.0.3" side-channel "^1.0.4" -interpret@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - into-stream@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-6.0.0.tgz#4bfc1244c0128224e18b8870e85b2de8e66c6702" @@ -9030,13 +9025,6 @@ readable-stream@^4.1.0: events "^3.3.0" process "^0.11.10" -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== - dependencies: - resolve "^1.1.6" - redent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" @@ -9177,7 +9165,7 @@ resolve.exports@^2.0.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.20.0, resolve@^1.22.1: +resolve@^1.10.0, resolve@^1.20.0, resolve@^1.22.1: version "1.22.2" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== @@ -9428,15 +9416,6 @@ shell-quote@^1.6.1: resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== -shelljs@0.8.5: - version "0.8.5" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" - integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - shimmer@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337" @@ -9907,7 +9886,7 @@ tapable@^2.2.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -tar@^6.0.5, tar@^6.1.11, tar@^6.1.13, tar@^6.1.2: +tar@6.1.13, tar@^6.0.5, tar@^6.1.11, tar@^6.1.13, tar@^6.1.2: version "6.1.13" resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.13.tgz#46e22529000f612180601a6fe0680e7da508847b" integrity sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==