@samitouri / QOS-React-1 / commits / 6948639df6

[publish] Add script to publish packages

Adds a script to publish babel-plugin-react-compiler, eslint-plugin-react-compiler, and react-compiler-healthcheck to npm. Instructions are in a comment in scripts/publish.js, please read carefully before using this script! Test plan: ``` $ yarn npm:publish yarn run v1.22.10 $ node scripts/publish ℹ Preparing to publish (dry run) [debug=false] ℹ Building packages ✔ Successfully built babel-plugin-react-compiler ✔ Successfully built eslint-plugin-react-compiler ✔ Successfully built react-compiler-healthcheck ℹ Dry run: Report tarball contents ========== babel-plugin-react-compiler ========== ⠴ Running npm pack --dry-run npm WARN config init.author.name Use `--init-author-name` instead. npm WARN config init.author.email Use `--init-author-email` instead. ⠦ Running npm pack --dry-run npm notice npm notice 📦 babel-plugin-react-compiler@0.0.1 npm notice === Tarball Contents === npm notice 11B dist/__tests__/DisjointSet-test.d.ts npm notice 11B dist/__tests__/envConfig-test.d.ts npm notice 11B dist/__tests__/Logger-test.d.ts npm notice 11B dist/__tests__/parseConfigPragma-test.d.ts npm notice 11B dist/__tests__/Result-test.d.ts npm notice 145B dist/__tests__/test-utils/validateNoUseBeforeDefine.d.ts npm notice 144B dist/Babel/BabelPlugin.d.ts npm notice 350B dist/Babel/RunReactCompilerBabelPlugin.d.ts npm notice 2.4kB dist/CompilerError.d.ts npm notice 455B dist/Entrypoint/Gating.d.ts npm notice 376B dist/Entrypoint/Imports.d.ts npm notice 166B dist/Entrypoint/index.d.ts npm notice 1.8kB dist/Entrypoint/Options.d.ts npm notice 1.3kB dist/Entrypoint/Pipeline.d.ts npm notice 819B dist/Entrypoint/Program.d.ts npm notice 295B dist/Entrypoint/Reanimated.d.ts npm notice 753B dist/Entrypoint/Suppression.d.ts npm notice 113B dist/HIR/AssertConsistentIdentifiers.d.ts npm notice 115B dist/HIR/AssertTerminalSuccessorsExist.d.ts npm notice 529B dist/HIR/AssertValidBlockNesting.d.ts npm notice 110B dist/HIR/AssertValidMutableRanges.d.ts npm notice 585B dist/HIR/BuildHIR.d.ts npm notice 116B dist/HIR/BuildReactiveScopeTerminalsHIR.d.ts npm notice 125B dist/HIR/ComputeUnconditionalBlocks.d.ts npm notice 602B dist/HIR/Dominator.d.ts npm notice 12.7kB dist/HIR/Environment.d.ts npm notice 184B dist/HIR/FindContextIdentifiers.d.ts npm notice 401B dist/HIR/Globals.d.ts npm notice 22.2kB dist/HIR/HIR.d.ts npm notice 2.8kB dist/HIR/HIRBuilder.d.ts npm notice 1.1kB dist/HIR/index.d.ts npm notice 108B dist/HIR/MergeConsecutiveBlocks.d.ts npm notice 115B dist/HIR/MergeOverlappingReactiveScopesHIR.d.ts npm notice 2.2kB dist/HIR/ObjectShape.d.ts npm notice 1.4kB dist/HIR/PrintHIR.d.ts npm notice 106B dist/HIR/PruneUnusedLabelsHIR.d.ts npm notice 1.1kB dist/HIR/Types.d.ts npm notice 1.9kB dist/HIR/visitors.d.ts npm notice 776B dist/index.d.ts npm notice 5.4MB dist/index.js npm notice 429B dist/Inference/AnalyseFunctions.d.ts npm notice 324B dist/Inference/DropManualMemoization.d.ts npm notice 436B dist/Inference/index.d.ts npm notice 224B dist/Inference/InferAlias.d.ts npm notice 204B dist/Inference/InferAliasForPhis.d.ts npm notice 206B dist/Inference/InferAliasForStores.d.ts npm notice 115B dist/Inference/InferMutableContextVariables.d.ts npm notice 151B dist/Inference/InferMutableLifetimes.d.ts npm notice 109B dist/Inference/InferMutableRanges.d.ts npm notice 212B dist/Inference/InferMutableRangesForAlias.d.ts npm notice 106B dist/Inference/InferReactivePlaces.d.ts npm notice 368B dist/Inference/InferReferenceEffects.d.ts npm notice 201B dist/Inference/InferTryCatchAliases.d.ts npm notice 130B dist/Inference/InlineImmediatelyInvokedFunctionExpressions.d.ts npm notice 106B dist/Optimization/ConstantPropagation.d.ts npm notice 258B dist/Optimization/DeadCodeElimination.d.ts npm notice 177B dist/Optimization/index.d.ts npm notice 103B dist/Optimization/PruneMaybeThrows.d.ts npm notice 108B dist/ReactiveScopes/AlignMethodCallScopes.d.ts npm notice 110B dist/ReactiveScopes/AlignObjectMethodScopes.d.ts npm notice 133B dist/ReactiveScopes/AlignReactiveScopesToBlockScopes.d.ts npm notice 126B dist/ReactiveScopes/AlignReactiveScopesToBlockScopesHIR.d.ts npm notice 132B dist/ReactiveScopes/AssertScopeInstructionsWithinScope.d.ts npm notice 125B dist/ReactiveScopes/AssertWellFormedBreakTargets.d.ts npm notice 363B dist/ReactiveScopes/BuildReactiveBlocks.d.ts npm notice 142B dist/ReactiveScopes/BuildReactiveFunction.d.ts npm notice 759B dist/ReactiveScopes/CodegenReactiveFunction.d.ts npm notice 154B dist/ReactiveScopes/CollectReactiveIdentifiers.d.ts npm notice 128B dist/ReactiveScopes/CollectReferencedGlobals.d.ts npm notice 698B dist/ReactiveScopes/DeriveMinimalDependencies.d.ts npm notice 138B dist/ReactiveScopes/ExtractScopeDeclarationsFromDestructuring.d.ts npm notice 121B dist/ReactiveScopes/FlattenReactiveLoops.d.ts npm notice 124B dist/ReactiveScopes/FlattenScopesWithHooksOrUse.d.ts npm notice 2.1kB dist/ReactiveScopes/index.d.ts npm notice 370B dist/ReactiveScopes/InferReactiveScopeVariables.d.ts npm notice 217B dist/ReactiveScopes/MemoizeFbtOperandsInSameScope.d.ts npm notice 127B dist/ReactiveScopes/MergeOverlappingReactiveScopes.d.ts npm notice 138B dist/ReactiveScopes/MergeReactiveScopesThatInvalidateTogether.d.ts npm notice 1.0kB dist/ReactiveScopes/PrintReactiveFunction.d.ts npm notice 123B dist/ReactiveScopes/PromoteUsedTemporaries.d.ts npm notice 118B dist/ReactiveScopes/PropagateEarlyReturns.d.ts npm notice 127B dist/ReactiveScopes/PropagateScopeDependencies.d.ts npm notice 123B dist/ReactiveScopes/PruneAllReactiveScopes.d.ts npm notice 126B dist/ReactiveScopes/PruneAlwaysInvalidatingScopes.d.ts npm notice 117B dist/ReactiveScopes/PruneHoistedContexts.d.ts npm notice 227B dist/ReactiveScopes/PruneNonEscapingScopes.d.ts npm notice 125B dist/ReactiveScopes/PruneNonReactiveDependencies.d.ts npm notice 122B dist/ReactiveScopes/PruneTemporaryLValues.d.ts npm notice 118B dist/ReactiveScopes/PruneUnusedLabels.d.ts npm notice 118B dist/ReactiveScopes/PruneUnusedScopes.d.ts npm notice 123B dist/ReactiveScopes/RenameVariables.d.ts npm notice 114B dist/ReactiveScopes/StabilizeBlockIds.d.ts npm notice 3.1kB dist/ReactiveScopes/visitors.d.ts npm notice 170B dist/SSA/EliminateRedundantPhi.d.ts npm notice 101B dist/SSA/EnterSSA.d.ts npm notice 154B dist/SSA/index.d.ts npm notice 99B dist/SSA/LeaveSSA.d.ts npm notice 63.5kB dist/tsconfig.tsbuildinfo npm notice 43B dist/TypeInference/index.d.ts npm notice 103B dist/TypeInference/InferTypes.d.ts npm notice 352B dist/Utils/ComponentDeclaration.d.ts npm notice 256B dist/Utils/DisjointSet.d.ts npm notice 322B dist/Utils/HookDeclaration.d.ts npm notice 613B dist/Utils/logger.d.ts npm notice 2.3kB dist/Utils/Result.d.ts npm notice 119B dist/Utils/RuntimeDiagnosticConstants.d.ts npm notice 1.1kB dist/Utils/Stack.d.ts npm notice 149B dist/Utils/todo.d.ts npm notice 782B dist/Utils/utils.d.ts npm notice 603B dist/Validation/index.d.ts npm notice 117B dist/Validation/ValidateContextVariableLValues.d.ts npm notice 109B dist/Validation/ValidateHooksUsage.d.ts npm notice 214B dist/Validation/ValidateMemoizedEffectDependencies.d.ts npm notice 113B dist/Validation/ValidateNoCapitalizedCalls.d.ts npm notice 114B dist/Validation/ValidateNoRefAccesInRender.d.ts npm notice 113B dist/Validation/ValidateNoSetStateInRender.d.ts npm notice 131B dist/Validation/ValidatePreservedManualMemoization.d.ts npm notice 102B dist/Validation/ValidateUseMemo.d.ts npm notice 2.3kB package.json npm notice === Tarball Details === npm notice name: babel-plugin-react-compiler npm notice version: 0.0.1 npm notice filename: babel-plugin-react-compiler-0.0.1.tgz npm notice package size: 1.1 MB npm notice unpacked size: 5.5 MB npm notice shasum: 9a0fb71bdc904d6ab92432a506b0e037f10dd7ce npm notice integrity: sha512-hXtObyIEP4MbO[...]jstRbpztyLf4g== npm notice total files: 119 npm notice ========== eslint-plugin-react-compiler ========== ⠴ Running npm pack --dry-run npm WARN config init.author.name Use `--init-author-name` instead. npm WARN config init.author.email Use `--init-author-email` instead. ⠋ Running npm pack --dry-run npm notice npm notice 📦 eslint-plugin-react-compiler@0.0.0 npm notice === Tarball Contents === npm notice 827B README.md npm notice 2.1MB dist/index.js npm notice 968B package.json npm notice === Tarball Details === npm notice name: eslint-plugin-react-compiler npm notice version: 0.0.0 npm notice filename: eslint-plugin-react-compiler-0.0.0.tgz npm notice package size: 300.5 kB npm notice unpacked size: 2.1 MB npm notice shasum: f24dab544b03d36d9bb676a16256f114bd5e0ed6 npm notice integrity: sha512-8PcKZXZ+RVBDP[...]D7jFmkvHJoBeA== npm notice total files: 3 npm notice ========== react-compiler-healthcheck ========== ⠼ Running npm pack --dry-run npm WARN config init.author.name Use `--init-author-name` instead. npm WARN config init.author.email Use `--init-author-email` instead. ⠏ Running npm pack --dry-run npm notice npm notice 📦 react-compiler-healthcheck@0.0.0 npm notice === Tarball Contents === npm notice 2.1MB dist/index.js npm notice 677B package.json npm notice 1.8kB rollup.config.js npm notice 1.1kB src/checks/libraryCompat.ts npm notice 3.2kB src/checks/reactCompiler.ts npm notice 759B src/checks/strictMode.ts npm notice 67B src/config.ts npm notice 1.5kB src/index.ts npm notice 602B tsconfig.json npm notice === Tarball Details === npm notice name: react-compiler-healthcheck npm notice version: 0.0.0 npm notice filename: react-compiler-healthcheck-0.0.0.tgz npm notice package size: 290.4 kB npm notice unpacked size: 2.1 MB npm notice shasum: 55c0eb57aebc7305270a29e78ebf6c056044bae0 npm notice integrity: sha512-nPVhGyh8i9PoO[...]v52c3U0tKGpzA== npm notice total files: 9 npm notice ✔ Please confirm contents of packages before publishing. You can run this command again with --for-real to publish to npm ✨ Done in 61.19s. ``` ``` $ yarn npm:publish --debug --for-real yarn run v1.22.10 $ node scripts/publish --debug --for-real ℹ Preparing to publish (for real) [debug=true] ℹ Building packages ✔ Successfully built babel-plugin-react-compiler ✔ Successfully built eslint-plugin-react-compiler ✔ Successfully built react-compiler-healthcheck ✔ Bumped babel-plugin-react-compiler to 0.0.0-experimental-2769f7a-20240513 ✔ Bumped eslint-plugin-react-compiler to 0.0.0-experimental-e04a001-20240513 ✔ Bumped react-compiler-healthcheck to 0.0.0-experimental-410375f-20240513 ========== babel-plugin-react-compiler ========== ⠋ Publishing babel-plugin-react-compiler to npm Command that would have run: npm publish --dry-run /Users/lauren/code/react-forget/compiler/scripts/publish.js:188 throw new Error( ^ Error: This error is intentional, please double check scripts/publish.js and remove this error prior to publishing at main (/Users/lauren/code/react-forget/compiler/scripts/publish.js:188:13) Node.js v20.11.0 error Command failed with exit code 1. info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. ``` On the day of launch, remove the hardcoded error, then run `yarn npm:publish --debug --for-real` first as a sanity check. Confirm the contents are correct. Then when you are certain, run `yarn npm:publish --for-real`, and push the commited version bumps to GitHub so the hashes that the packages originate from are public. ghstack-source-id: 403bc22d4b340056fd112fcfc38580f28ed6c986 Pull Request resolved: https://github.com/facebook/react-forget/pull/2966

Lauren Tan committed May 14, 2024 at 11:01 UTC 6948639df67235e3f79755f2373ff5f913e86637
3 files changed +233 -32
compiler/package.json
+6 -2
@@ -26,7 +26,8 @@
26 "test": "yarn workspaces run test",
27 "snap": "yarn workspace babel-plugin-react-compiler run snap",
28 "snap:build": "yarn workspace snap run build",
29 - "postinstall": "perl -p -i -e 's/react\\.element/react.transitional.element/' packages/snap/node_modules/fbt/lib/FbtReactUtil.js && perl -p -i -e 's/didWarnAboutUsingAct = false;/didWarnAboutUsingAct = true;/' packages/babel-plugin-react-compiler/node_modules/react-dom/cjs/react-dom-test-utils.development.js"
29 + "postinstall": "perl -p -i -e 's/react\\.element/react.transitional.element/' packages/snap/node_modules/fbt/lib/FbtReactUtil.js && perl -p -i -e 's/didWarnAboutUsingAct = false;/didWarnAboutUsingAct = true;/' packages/babel-plugin-react-compiler/node_modules/react-dom/cjs/react-dom-test-utils.development.js",
30 + "npm:publish": "node scripts/publish"
31 },
32 "dependencies": {},
33 "devDependencies": {
@@ -37,10 +38,13 @@
38 "@rollup/plugin-typescript": "^11.1.6",
39 "@tsconfig/strictest": "^2.0.5",
40 "concurrently": "^7.4.0",
41 + "folder-hash": "^4.0.4",
42 + "ora": "5.4.1",
43 "rollup": "^4.13.2",
44 "rollup-plugin-banner2": "^1.2.3",
45 "rollup-plugin-prettier": "^4.1.1",
43 - "typescript": "^5.4.3"
46 + "typescript": "^5.4.3",
47 + "yargs": "^17.7.2"
48 },
49 "resolutions": {
50 "react-is": "19.0.0-beta-b498834eab-20240506"
compiler/scripts/publish.js new
+214
@@ -0,0 +1,214 @@
1 +const cp = require("child_process");
2 +const ora = require("ora");
3 +const path = require("path");
4 +const yargs = require("yargs");
5 +const util = require("util");
6 +const { hashElement } = require("folder-hash");
7 +
8 +const PUBLISHABLE_PACKAGES = [
9 + "babel-plugin-react-compiler",
10 + "eslint-plugin-react-compiler",
11 + "react-compiler-healthcheck",
12 +];
13 +const TIME_TO_RECONSIDER = 10_000;
14 +
15 +function _spawn(command, args, options, cb) {
16 + const child = cp.spawn(command, args, options);
17 + child.on("close", (exitCode) => {
18 + cb(null, exitCode);
19 + });
20 + return child;
21 +}
22 +const spawnHelper = util.promisify(_spawn);
23 +
24 +function execHelper(command, options, streamStdout = false) {
25 + return new Promise((resolve, reject) => {
26 + const proc = cp.exec(command, options, (error, stdout) =>
27 + error ? reject(error) : resolve(stdout.trim())
28 + );
29 + if (streamStdout) {
30 + proc.stdout.pipe(process.stdout);
31 + }
32 + });
33 +}
34 +
35 +function sleep(ms) {
36 + return new Promise((resolve) => setTimeout(resolve, ms));
37 +}
38 +
39 +async function getDateStringForCommit(commit) {
40 + let dateString = await execHelper(
41 + `git show -s --no-show-signature --format=%cd --date=format:%Y%m%d ${commit}`
42 + );
43 +
44 + // On CI environment, this string is wrapped with quotes '...'s
45 + if (dateString.startsWith("'")) {
46 + dateString = dateString.slice(1, 9);
47 + }
48 +
49 + return dateString;
50 +}
51 +
52 +/**
53 + * Please login to npm first with `npm login`. You will also need 2FA enabled to push to npm.
54 + *
55 + * Script for publishing PUBLISHABLE_PACKAGES to npm. By default, this runs in tarball mode, meaning
56 + * the script will only print out what the contents of the files included in the npm tarball would
57 + * be.
58 + *
59 + * Please run this first (ie `yarn npm:publish`) and double check the contents of the files that
60 + * will be pushed to npm.
61 + *
62 + * If it looks good, you can run `yarn npm:publish --for-real` to really publish to npm. There's a
63 + * small annoying delay before the packages are actually pushed to give you time to panic cancel. In
64 + * this mode, we will bump the version field of each package's package.json, and git commit it.
65 + * Then, the packages will be published to npm.
66 + *
67 + * Optionally, you can add the `--debug` flag to `yarn npm:publish --debug --for-real` to run all
68 + * steps, but the final npm publish step will have the `--dry-run` flag added to it. This will make
69 + * the command only report what it would have done, instead of actually publishing to npm.
70 + */
71 +async function main() {
72 + const argv = yargs(process.argv.slice(2))
73 + .option("packages", {
74 + description: "which packages to publish, defaults to all",
75 + choices: PUBLISHABLE_PACKAGES,
76 + default: PUBLISHABLE_PACKAGES,
77 + })
78 + .option("for-real", {
79 + alias: "frfr",
80 + description:
81 + "whether to publish to npm (npm publish) or dryrun (npm publish --dry-run)",
82 + type: "boolean",
83 + default: false,
84 + })
85 + .option("debug", {
86 + description:
87 + "If enabled, will always run npm commands in dry run mode irregardless of the for-real flag",
88 + type: "boolean",
89 + default: false,
90 + })
91 + .help("help")
92 + .parseSync();
93 +
94 + const { packages, forReal, debug } = argv;
95 + const spinner = ora(
96 + `Preparing to publish ${
97 + forReal === true ? "(for real)" : "(dry run)"
98 + } [debug=${debug}]`
99 + ).info();
100 +
101 + spinner.info("Building packages");
102 + for (const pkgName of packages) {
103 + const command = `yarn workspace ${pkgName} run build`;
104 + spinner.start(`Running: ${command}\n`);
105 + try {
106 + await execHelper(command);
107 + } catch (e) {
108 + spinner.fail(e.toString());
109 + throw e;
110 + }
111 + spinner.succeed(`Successfully built ${pkgName}`);
112 + }
113 + spinner.stop();
114 +
115 + if (forReal === false) {
116 + spinner.info("Dry run: Report tarball contents");
117 + for (const pkgName of packages) {
118 + console.log(`\n========== ${pkgName} ==========\n`);
119 + spinner.start(`Running npm pack --dry-run\n`);
120 + try {
121 + await spawnHelper("npm", ["pack", "--dry-run"], {
122 + cwd: path.resolve(__dirname, `../packages/${pkgName}`),
123 + stdio: "inherit",
124 + });
125 + } catch (e) {
126 + spinner.fail(e.toString());
127 + throw e;
128 + }
129 + spinner.stop(`Successfully packed ${pkgName} (dry run)`);
130 + }
131 + spinner.succeed(
132 + "Please confirm contents of packages before publishing. You can run this command again with --for-real to publish to npm"
133 + );
134 + }
135 +
136 + if (forReal === true) {
137 + const commit = await execHelper(
138 + "git show -s --no-show-signature --format=%h",
139 + {
140 + cwd: path.resolve(__dirname, ".."),
141 + }
142 + );
143 + const dateString = await getDateStringForCommit(commit);
144 +
145 + for (const pkgName of packages) {
146 + const pkgDir = path.resolve(__dirname, `../packages/${pkgName}`);
147 + const { hash } = await hashElement(pkgDir, {
148 + encoding: "hex",
149 + files: { exclude: [".DS_Store"] },
150 + });
151 + const truncatedHash = hash.slice(0, 7);
152 + const newVersion = `0.0.0-experimental-${truncatedHash}-${dateString}`;
153 +
154 + spinner.start(`Bumping version: ${pkgName}`);
155 + try {
156 + await execHelper(
157 + `yarn version --new-version ${newVersion} --no-git-tag-version`,
158 + {
159 + cwd: pkgDir,
160 + }
161 + );
162 + await execHelper(
163 + `git add package.json && git commit -m "Bump version to ${newVersion}"`,
164 + {
165 + cwd: pkgDir,
166 + }
167 + );
168 + } catch (e) {
169 + spinner.fail(e.toString());
170 + throw e;
171 + }
172 + spinner.succeed(
173 + `Bumped ${pkgName} to ${newVersion} and added a git commit`
174 + );
175 + }
176 +
177 + if (debug === false) {
178 + spinner.info(
179 + `🚨🚨🚨 About to publish to npm in ${
180 + TIME_TO_RECONSIDER / 1000
181 + } seconds. You still have time to kill this script!`
182 + );
183 + await sleep(TIME_TO_RECONSIDER);
184 + }
185 +
186 + for (const pkgName of packages) {
187 + const pkgDir = path.resolve(__dirname, `../packages/${pkgName}`);
188 + console.log(`\n========== ${pkgName} ==========\n`);
189 + spinner.start(`Publishing ${pkgName} to npm\n`);
190 +
191 + const opts = debug === true ? ["publish", "--dry-run"] : ["publish"];
192 + console.log(`Command that would have run: npm ${opts.join(" ")}`);
193 + throw new Error(
194 + "This error is intentional, please double check scripts/publish.js and remove this error prior to publishing"
195 + );
196 +
197 + try {
198 + await spawnHelper("npm", opts, {
199 + cwd: pkgDir,
200 + stdio: "inherit",
201 + });
202 + console.log("\n");
203 + } catch (e) {
204 + spinner.fail(e.toString());
205 + throw e;
206 + }
207 + spinner.succeed(`Successfully published ${pkgName} to npm`);
208 + }
209 +
210 + console.log("\n\n✅ All done, please push version bump commits to GitHub");
211 + }
212 +}
213 +
214 +main();
compiler/yarn.lock
+13 -30
@@ -4265,7 +4265,7 @@ date-fns@^2.29.1:
4265 dependencies:
4266 "@babel/runtime" "^7.21.0"
4267
4268 -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4:
4268 +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4:
4269 version "4.3.4"
4270 resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
4271 integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
@@ -5294,6 +5294,14 @@ flow-enums-runtime@^0.0.4:
5294 resolved "https://registry.yarnpkg.com/flow-enums-runtime/-/flow-enums-runtime-0.0.4.tgz#038635c679030d08d4c197db29a2fad62722072f"
5295 integrity sha512-kkJ/ABZb4rhyFw05yCWdcA1K2uW7ddYzz9zVNJp5kRX3BzsIynB4f0E4oLlf+zgDLErj9FwGda1qEAmhnRNXPQ==
5296
5297 +folder-hash@^4.0.4:
5298 + version "4.0.4"
5299 + resolved "https://registry.yarnpkg.com/folder-hash/-/folder-hash-4.0.4.tgz#f5ffa14e9fc6f3213598f6a367207adf7d419edc"
5300 + integrity sha512-zEyYH+UsHEfJJcCRSf9ai5I4CTZwZ8ObONRuEI5hcEmJY5pS0FUWKruX9mMnYJrgC7MlPFDYnGsK1R+WFYjLlQ==
5301 + dependencies:
5302 + debug "^4.3.3"
5303 + minimatch "~5.1.2"
5304 +
5305 for-each@^0.3.3:
5306 version "0.3.3"
5307 resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e"
@@ -7718,7 +7726,7 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
7726 dependencies:
7727 brace-expansion "^1.1.7"
7728
7721 -minimatch@^5.0.1:
7729 +minimatch@^5.0.1, minimatch@~5.1.2:
7730 version "5.1.6"
7731 resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96"
7732 integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==
@@ -8989,16 +8997,7 @@ string-length@^4.0.1:
8997 char-regex "^1.0.2"
8998 strip-ansi "^6.0.0"
8999
8992 -"string-width-cjs@npm:string-width@^4.2.0":
8993 - version "4.2.3"
8994 - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
8995 - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
8996 - dependencies:
8997 - emoji-regex "^8.0.0"
8998 - is-fullwidth-code-point "^3.0.0"
8999 - strip-ansi "^6.0.1"
9000 -
9001 -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
9000 +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
9001 version "4.2.3"
9002 resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
9003 integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@@ -9091,14 +9090,7 @@ string_decoder@^1.1.1:
9090 dependencies:
9091 safe-buffer "~5.2.0"
9092
9094 -"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
9095 - version "6.0.1"
9096 - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
9097 - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
9098 - dependencies:
9099 - ansi-regex "^5.0.1"
9100 -
9101 -strip-ansi@^6.0.0, strip-ansi@^6.0.1:
9093 +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
9094 version "6.0.1"
9095 resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
9096 integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
@@ -9748,7 +9740,7 @@ wordwrap@>=0.0.2:
9740 resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
9741 integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==
9742
9751 -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
9743 +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0:
9744 version "7.0.0"
9745 resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
9746 integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
@@ -9766,15 +9758,6 @@ wrap-ansi@^6.2.0:
9758 string-width "^4.1.0"
9759 strip-ansi "^6.0.0"
9760
9769 -wrap-ansi@^7.0.0:
9770 - version "7.0.0"
9771 - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
9772 - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
9773 - dependencies:
9774 - ansi-styles "^4.0.0"
9775 - string-width "^4.1.0"
9776 - strip-ansi "^6.0.0"
9777 -
9761 wrap-ansi@^8.1.0:
9762 version "8.1.0"
9763 resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"