diff --git a/package.json b/package.json index 1391ec431b..d138432b4c 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,9 @@ "version-checkout": "cat package.json | jq '.version' -r | xargs printf \"release/v%s\" | xargs git checkout -b", "version-commit": "cat package.json | jq '.version' -r | xargs printf \"release v%s\" | git commit --no-edit -s -F -", "version": "yarn run version-checkout && git add package.json && yarn run version-commit", - "postversion": "git push --set-upstream ${GIT_REMOTE:-origin} release/v$npm_package_version" + "postversion": "git push --set-upstream ${GIT_REMOTE:-origin} release/v$npm_package_version", + "precreate-release-pr": "npx swc ./scripts/create-release-pr.ts -o ./scripts/create-release-pr.mjs", + "create-release-pr": "node ./scripts/create-release-pr.mjs" }, "config": { "k8sProxyVersion": "0.2.1", @@ -291,6 +293,7 @@ "@material-ui/lab": "^4.0.0-alpha.60", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.7", "@sentry/types": "^6.19.7", + "@swc/cli": "^0.1.57", "@swc/core": "^1.2.223", "@swc/jest": "^0.2.22", "@testing-library/dom": "^7.31.2", diff --git a/scripts/.gitignore b/scripts/.gitignore new file mode 100644 index 0000000000..493f3a63f4 --- /dev/null +++ b/scripts/.gitignore @@ -0,0 +1,2 @@ +*.mjs +*.map diff --git a/scripts/.swcrc b/scripts/.swcrc new file mode 100644 index 0000000000..8e7a530f16 --- /dev/null +++ b/scripts/.swcrc @@ -0,0 +1,9 @@ +{ + "$schema": "https://json.schemastore.org/swcrc", + "jsc": { + "parser": { + "syntax": "typescript" + }, + "target": "es2022" + } +} diff --git a/scripts/create-release-pr.mjs b/scripts/create-release-pr.ts similarity index 69% rename from scripts/create-release-pr.mjs rename to scripts/create-release-pr.ts index e135f66fc4..29f370ceac 100755 --- a/scripts/create-release-pr.mjs +++ b/scripts/create-release-pr.ts @@ -1,16 +1,14 @@ -#!/usr/bin/env node /** * Copyright (c) OpenLens Authors. All rights reserved. * Licensed under MIT License. See LICENSE in root directory for more information. */ - -// This script creates a release PR -import { execSync, exec, spawn } from "child_process"; +import { exec, spawn } from "child_process"; import commandLineArgs from "command-line-args"; import fse from "fs-extra"; import { basename } from "path"; +import { createInterface } from "readline"; import semver from "semver"; -import { promisify } from "util"; +import { inspect, promisify } from "util"; const { SemVer, @@ -18,7 +16,6 @@ const { rcompare: semverRcompare, lte: semverLte, } = semver; -const { readJsonSync } = fse; const execP = promisify(exec); const options = commandLineArgs([ @@ -82,17 +79,17 @@ if (basename(process.cwd()) === "scripts") { } -const currentVersion = new SemVer(readJsonSync("./package.json").version); +const currentVersion = new SemVer((await fse.readJson("./package.json")).version); console.log(`current version: ${currentVersion.format()}`); console.log("fetching tags..."); -execSync("git fetch --tags --force"); +await execP("git fetch --tags --force"); -const actualTags = execSync("git tag --list", { encoding: "utf-8" }).split(/\r?\n/).map(line => line.trim()); +const actualTags = (await execP("git tag --list", { encoding: "utf-8" })).stdout.split(/\r?\n/).map(line => line.trim()); const [previousReleasedVersion] = actualTags - .map(semverValid) - .filter(Boolean) - .sort(semverRcompare) + .map((value) => semverValid(value)) + .filter((v): v is string => typeof v === "string") + .sort((l, r) => semverRcompare(l, r)) .filter(version => semverLte(version, currentVersion)); const npmVersionArgs = [ @@ -107,9 +104,9 @@ if (options.preid) { npmVersionArgs.push("--git-tag-version false"); -execSync(npmVersionArgs.join(" "), { stdio: "ignore" }); +await execP(npmVersionArgs.join(" ")); -const newVersion = new SemVer(readJsonSync("./package.json").version); +const newVersion = new SemVer((await fse.readJson("./package.json")).version); const newVersionMilestone = `${newVersion.major}.${newVersion.minor}.${newVersion.patch}`; console.log(`new version: ${newVersion.format()}`); @@ -121,11 +118,35 @@ const getMergedPrsArgs = [ "--limit=500", // Should be big enough, if not we need to release more often ;) "--state=merged", "--base=master", - "--json mergeCommit,title,author,labels,number,milestone", + "--json mergeCommit,title,author,labels,number,milestone,mergedAt", ]; +interface GithubPrData { + author: { + login: string; + }; + labels: { + id: string; + name: string; + description: string; + color: string; + }[]; + mergeCommit: { + oid: string; + }; + mergedAt: string; + milestone: { + number: number; + title: string; + description: string; + dueOn: null | string; + }; + number: number; + title: string; +} + console.log("retreiving last 500 PRs to create release PR body..."); -const mergedPrs = JSON.parse(execSync(getMergedPrsArgs.join(" "), { encoding: "utf-8" })); +const mergedPrs = JSON.parse((await execP(getMergedPrsArgs.join(" "), { encoding: "utf-8" })).stdout) as GithubPrData[]; const milestoneRelevantPrs = mergedPrs.filter(pr => pr.milestone?.title === newVersionMilestone); const relaventPrsQuery = await Promise.all( milestoneRelevantPrs.map(async pr => ({ @@ -136,7 +157,24 @@ const relaventPrsQuery = await Promise.all( const relaventPrs = relaventPrsQuery .filter(query => query.stdout) .map(query => query.pr) - .filter(pr => pr.labels.every(label => label.name !== "skip-changelog")); + .filter(pr => pr.labels.every(label => label.name !== "skip-changelog")) + .map(pr => ({ ...pr, mergedAt: new Date(pr.mergedAt) })) + .sort((left, right) => { + const leftAge = left.mergedAt.valueOf(); + const rightAge = right.mergedAt.valueOf(); + + if (leftAge === rightAge) { + return 0; + } + + if (leftAge > rightAge) { + return 1; + } + + return -1; + }); + +console.log(inspect(relaventPrs, false, null, true)); const enhancementPrLabelName = "enhancement"; const bugfixPrLabelName = "bug"; @@ -199,6 +237,28 @@ const createPrArgs = [ "--body-file", "-", ]; +const rl = createInterface(process.stdin); + +if (prBase !== "master") { + console.log("Cherry-picking commits to current branch"); + + for (const pr of relaventPrs) { + try { + const promise = execP(`git cherry-pick ${pr.mergeCommit.oid}`); + + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + promise.child.stdout!.pipe(process.stdout); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + promise.child.stderr!.pipe(process.stderr); + + await promise; + } catch { + console.error(`Failed to cherry-pick ${pr.mergeCommit.oid}, please resolve conflicts and then press enter here:`); + await new Promise(resolve => rl.on("line", () => resolve())); + } + } +} + const createPrProcess = spawn("gh", createPrArgs, { stdio: "pipe" }); let result = ""; @@ -207,7 +267,7 @@ createPrProcess.stdout.on("data", (chunk) => result += chunk); createPrProcess.stdin.write(prBody); createPrProcess.stdin.end(); -await new Promise((resolve) => { +await new Promise((resolve) => { createPrProcess.on("close", () => { createPrProcess.stdout.removeAllListeners(); resolve(); diff --git a/yarn.lock b/yarn.lock index 4b79090cd6..ad02853055 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1435,101 +1435,111 @@ dependencies: "@sinonjs/commons" "^1.7.0" -"@swc/core-android-arm-eabi@1.2.223": - version "1.2.223" - resolved "https://registry.yarnpkg.com/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.223.tgz#5d5ae572c90eb2e19f46c1ef56aab2e3fa7101fe" - integrity sha512-Hy/ya4oy80Ay70H9vhA8W0/FU9aQ/oQjvZ/on+wcNMATAiU9tk47i73LtPM01GruNiYJOwFcf2XWjlTpq5a0BQ== +"@swc/cli@^0.1.57": + version "0.1.57" + resolved "https://registry.yarnpkg.com/@swc/cli/-/cli-0.1.57.tgz#a9c424de5a217ec20a4b7c2c0e5c343980537e83" + integrity sha512-HxM8TqYHhAg+zp7+RdTU69bnkl4MWdt1ygyp6BDIPjTiaJVH6Dizn2ezbgDS8mnFZI1FyhKvxU/bbaUs8XhzQg== + dependencies: + commander "^7.1.0" + fast-glob "^3.2.5" + slash "3.0.0" + source-map "^0.7.3" + +"@swc/core-android-arm-eabi@1.2.244": + version "1.2.244" + resolved "https://registry.yarnpkg.com/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.244.tgz#f45c5560a471b867f780ed9bd0799620ff8afd04" + integrity sha512-bQN6SY78bFIm6lz46ss4+ZDU9owevVjF95Cm+3KB/13ZOPF+m5Pdm8WQLoBYTLgJ0r4/XukEe9XXjba/6Kf8kw== dependencies: "@swc/wasm" "1.2.122" -"@swc/core-android-arm64@1.2.223": - version "1.2.223" - resolved "https://registry.yarnpkg.com/@swc/core-android-arm64/-/core-android-arm64-1.2.223.tgz#13c1751f9af36525adbb420098a4c74765afa7c4" - integrity sha512-qujrIXDBMWcPcdtTG/r+RNVBU5rg2Sk9Vg+U4FybX3c34rIyX2QYu5sxwM/HIGfd6wCbt5lyFZOvgSY000MTNw== +"@swc/core-android-arm64@1.2.244": + version "1.2.244" + resolved "https://registry.yarnpkg.com/@swc/core-android-arm64/-/core-android-arm64-1.2.244.tgz#92d6cc1829d621fa1aa88d84d30a85112a82d148" + integrity sha512-CJeL/EeOIzrH+77otNT6wfGF8uadOHo4rEaBN/xvmtnpdADjYJ8Wt85X4nRK0G929bMke/QdJm5ilPNJdmgCTg== dependencies: "@swc/wasm" "1.2.130" -"@swc/core-darwin-arm64@1.2.223": - version "1.2.223" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.223.tgz#44ee2d1fbf9350c6aeda1983a384514272a9b2b7" - integrity sha512-CX32sRhAnFj3fJI6V4vdu5IUV5frEZNZM6hIPUs1UuVpxyuto9IZwd2y7/ACItB5RipA3VDL/c7jrFdSmfrgzg== +"@swc/core-darwin-arm64@1.2.244": + version "1.2.244" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.244.tgz#7e068d14c357771f7ca23d7e1941e8bd577d2b5f" + integrity sha512-ZhRK8L/lpPCerUxtrW48cRJtpsUG5xVTUXu3N0TrYuxRzzapHgK+61g1JdtcwdNvEV7l00X4vfCBRYO0S2nsmw== -"@swc/core-darwin-x64@1.2.223": - version "1.2.223" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.2.223.tgz#a157820e158d22c9b443821d15258bc58978e154" - integrity sha512-5FVQgWtqMmpOtky0JLTIF4a1WiAkuDOe5mwgzpi8nZ7nCxNo/DNThBbnIDlNhrR4M/1M6wzPshn1wNivvD7MQw== +"@swc/core-darwin-x64@1.2.244": + version "1.2.244" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.2.244.tgz#bdf3c8150a3e18c392f3d30749a24f71bbd381cd" + integrity sha512-4mY8Gkq2ZMUpXYCLceGp7w0Jnxp75N1gQswNFhMBU4k90ElDuBtPoUSnB1v8MwlQtK7WA25MdvwFnBaEJnfxOg== -"@swc/core-freebsd-x64@1.2.223": - version "1.2.223" - resolved "https://registry.yarnpkg.com/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.223.tgz#ec9b300860f378aeb183084d89ba65009910d9f9" - integrity sha512-5oumS+YZyOMMKc5D3Bvf/541SF8n4b8LQ5x4WFA2CdAzD/jCgphE0IoAZ0u3bHz9S6Tl6Emu11V+/ALHE1oUew== +"@swc/core-freebsd-x64@1.2.244": + version "1.2.244" + resolved "https://registry.yarnpkg.com/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.244.tgz#0941dd18745cc19ed35bc8b5f4c06f62fe91240d" + integrity sha512-k/NEZfkgtZ4S96woYArZ89jwJ/L1zyxihTgFFu7SxDt+WRE1EPmY42Gt4y874zi1JiSEFSRHiiueDUfRPu7C0Q== dependencies: "@swc/wasm" "1.2.130" -"@swc/core-linux-arm-gnueabihf@1.2.223": - version "1.2.223" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.223.tgz#3403de3c9402e1eeca68b1c134ea574739c7c49c" - integrity sha512-osYjVijq101xZjwPUKR6AUib1LZU9laaM3aEOyElAi8cHolsZEp8D9ynr7cSWFUZJuzpTlY7iuJeY3FszdWrJA== +"@swc/core-linux-arm-gnueabihf@1.2.244": + version "1.2.244" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.244.tgz#e60536c2c7e858940138366d9438d33c80a119e3" + integrity sha512-tE9b/oZWhMXwoXHkgHFckMrLrlczvG7HgQAdtDuA6g30Xd/3XmdVzC4NbXR+1HoaGVDh7cf0EFE3aKdfPvPQwA== dependencies: "@swc/wasm" "1.2.130" -"@swc/core-linux-arm64-gnu@1.2.223": - version "1.2.223" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.223.tgz#d0a2d5dd01c5744950e57ec59aa4696bbabf02e4" - integrity sha512-JZdPZIZzkJ6R+XB0lCnL0eD9VK/JfpZgKBqR3Gur9Fxs8Ea9p1HhZHSEAJ2T2YwV629dYjXwKqraOkLQrEMzCg== +"@swc/core-linux-arm64-gnu@1.2.244": + version "1.2.244" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.244.tgz#daa61051c971c30dd3bb5414be98ca7392b08c06" + integrity sha512-zrpVKUeQxZnzorOp3aXhjK1X2/6xuVZcdyxAUDzItP6G4nLbgPBEQLUi6aUjOjquFiihokXoKWaMPQjF/LqH+g== -"@swc/core-linux-arm64-musl@1.2.223": - version "1.2.223" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.223.tgz#667bd6583f93909736600acdd9d5cc4c6141d577" - integrity sha512-9BVDH5Cq+VlAuJrshCgxWgziLEGzShZ2OVZ7SEA/+md1y69x2VdMR9lMSfD/EXqb6AJAaFODRe20Irtppeqr2Q== +"@swc/core-linux-arm64-musl@1.2.244": + version "1.2.244" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.244.tgz#177ea7e8ba74309c2a08e165f147e63b7420a5d8" + integrity sha512-gI6bntk+HDe2witOsQgBDyDDpRmF5dfxbygvVsEdCI+Ko9yj5S9aCsc8WhhbtdcEG1Fo3v/sM/F/9pGatCAwzQ== -"@swc/core-linux-x64-gnu@1.2.223": - version "1.2.223" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.223.tgz#c29788110fe1aa7fb86332178dcd1606368fd2c2" - integrity sha512-Z+KAxSpUDNEPfjOKX/tZk67StvzIyAhTc5FPWoVhx5CBlkGQaDBRl1TNmb1wdne/WF9xVkx6wz22pvNevX5fig== +"@swc/core-linux-x64-gnu@1.2.244": + version "1.2.244" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.244.tgz#c4f00359567fdb25ab5616bf000168f4fcf30534" + integrity sha512-hwJ5HrDj7asmVGjzaT6SFdhPVxVUIYm9LCuE3yu89+6C5aR9YrCXvpgIjGcHJvEO2PLAtff72FsX7sbXbzzYGQ== -"@swc/core-linux-x64-musl@1.2.223": - version "1.2.223" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.223.tgz#24b7001530d4e09d7bae58c704ac79a6593bb9c1" - integrity sha512-3EkAOA0KQdm7Rw/0L5odtDKAtmzhgF7FKTL+zZb+s0ju5oMwFGN+XIIwUQdPSf11Ej3ezjHjHTFTlv0xqutfuA== +"@swc/core-linux-x64-musl@1.2.244": + version "1.2.244" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.244.tgz#f4d07fbd6c73f54dfa351caf8263a81245882a1f" + integrity sha512-P8d4AIVN63xaS3t5WhOo0Ejy/X7XaDxXe9sJpEbGQP7CGofhURvgXwe8Q6uhPeWC9AwEPu35ArFQ0ZUmOCY0rg== -"@swc/core-win32-arm64-msvc@1.2.223": - version "1.2.223" - resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.223.tgz#8902c20d3d7ed2c9741ff0e227581d26ce8e0497" - integrity sha512-n8LWkej30hvfvazrJgwS6kwBZXMFCevLiRsZmP8O4hpC9b1wfAa+KLm4nHOR+J8jwF7LEjiERdU6tbIWZz0Tnw== +"@swc/core-win32-arm64-msvc@1.2.244": + version "1.2.244" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.244.tgz#38167a47c1cd8c73d0621a14d46b7982d1d314ff" + integrity sha512-PZUhgooqPDo+NUo+tIxWI1jKnYVV2ACs8eUkSE++Qf7E4/9Igy79XHbG4/G5ERlCudhdcw4XkYiRN8GJQg6P5w== dependencies: "@swc/wasm" "1.2.130" -"@swc/core-win32-ia32-msvc@1.2.223": - version "1.2.223" - resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.223.tgz#591405f9fa07915e9d0b94a4174a5745621fe580" - integrity sha512-kEDGFFUC6xPqCom03QtR+76Ptwtf8RABI4FqRdvrvbasw9zj0xkuLSDCvqL72zdOZCWRciiFijQVHfndLByMAQ== +"@swc/core-win32-ia32-msvc@1.2.244": + version "1.2.244" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.244.tgz#7d6cb0ab95358dc56bd92ca85ac06687a732fa51" + integrity sha512-w7v8fND4E8wOHoVVNJIDjOh8EQiedI9HCsCTEDM/z/dVPsk/rxi6iHYnZG6gv+X/d0aCLeZQOkW9khfyy128cg== dependencies: "@swc/wasm" "1.2.130" -"@swc/core-win32-x64-msvc@1.2.223": - version "1.2.223" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.223.tgz#7a4549cedb7c0e7a3d4861c2b5230224194e0f04" - integrity sha512-nzL8rwzMFA9cBK2s+QBMPcNnoGSPMfgY9ypRw/nTp0hQDgdLOXHy9moGFJg8dbdQD39kC5s8yQ0BmyKvePILgg== +"@swc/core-win32-x64-msvc@1.2.244": + version "1.2.244" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.244.tgz#fed9dd48b3ac1269c7dc62e23fa875ec3f2356b4" + integrity sha512-/A9ssLtqXEQrdHnJ9SvZSBF7zQM/0ydz8B3p5BT9kUbAhmNqbfE4/Wy3d2zd7nrF16n6tRm4giCzcIdzd/7mvw== "@swc/core@^1.2.223": - version "1.2.223" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.2.223.tgz#e44a3f6971a1f5c22d1037cf60510ef32c93d2a5" - integrity sha512-LcKX1frJ1iJDSYlY9Bg0vm0rYsXloITh6PdEYM5amT73J9mC1c2YpWLnWQiH2QpcyblyMhX1pk1eZ2JZjaynrQ== + version "1.2.244" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.2.244.tgz#d8ba46113c35f2e33dad6663ba8ce178542e24a3" + integrity sha512-/UguNMvKgVeR8wGFb53h+Y9hFSiEpeUhC4Cr1neN15wvWZD3lfvN4qAdqNifZiiPKXrCwYy8NTKlHVtHMYzpXw== optionalDependencies: - "@swc/core-android-arm-eabi" "1.2.223" - "@swc/core-android-arm64" "1.2.223" - "@swc/core-darwin-arm64" "1.2.223" - "@swc/core-darwin-x64" "1.2.223" - "@swc/core-freebsd-x64" "1.2.223" - "@swc/core-linux-arm-gnueabihf" "1.2.223" - "@swc/core-linux-arm64-gnu" "1.2.223" - "@swc/core-linux-arm64-musl" "1.2.223" - "@swc/core-linux-x64-gnu" "1.2.223" - "@swc/core-linux-x64-musl" "1.2.223" - "@swc/core-win32-arm64-msvc" "1.2.223" - "@swc/core-win32-ia32-msvc" "1.2.223" - "@swc/core-win32-x64-msvc" "1.2.223" + "@swc/core-android-arm-eabi" "1.2.244" + "@swc/core-android-arm64" "1.2.244" + "@swc/core-darwin-arm64" "1.2.244" + "@swc/core-darwin-x64" "1.2.244" + "@swc/core-freebsd-x64" "1.2.244" + "@swc/core-linux-arm-gnueabihf" "1.2.244" + "@swc/core-linux-arm64-gnu" "1.2.244" + "@swc/core-linux-arm64-musl" "1.2.244" + "@swc/core-linux-x64-gnu" "1.2.244" + "@swc/core-linux-x64-musl" "1.2.244" + "@swc/core-win32-arm64-msvc" "1.2.244" + "@swc/core-win32-ia32-msvc" "1.2.244" + "@swc/core-win32-x64-msvc" "1.2.244" "@swc/jest@^0.2.22": version "0.2.22" @@ -4182,7 +4192,7 @@ commander@^5.0.0: resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== -commander@^7.0.0: +commander@^7.0.0, commander@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== @@ -5947,7 +5957,7 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.2.11, fast-glob@^3.2.9: +fast-glob@^3.2.11, fast-glob@^3.2.5, fast-glob@^3.2.9: version "3.2.11" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== @@ -11819,7 +11829,7 @@ sisteransi@^1.0.5: resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== -slash@^3.0.0: +slash@3.0.0, slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==