@samitouri / QOS-React-1 / commits / e09c631aff

[be][snap] Make testfilter file recognize glob patterns, remove @skip

Mofei Zhang committed Mar 11, 2024 at 13:55 UTC e09c631afff3c7284cabcd9368d59fcfe3b7ec1e
3 files changed +179 -70
compiler/packages/snap/package.json
+4 -2
@@ -27,9 +27,10 @@
27 "@testing-library/react": "^13.4.0",
28 "babel-plugin-react-forget": "*",
29 "babel-plugin-syntax-hermes-parser": "^0.15.1",
30 - "hermes-parser": "^0.19.1",
30 "chalk": "4",
31 "fbt": "^1.0.0",
32 + "glob": "^10.3.10",
33 + "hermes-parser": "^0.19.1",
34 "jsdom": "^22.1.0",
35 "prettier": "2.8.8",
36 "react": "^0.0.0-experimental-493f72b0a-20230727",
@@ -39,14 +40,15 @@
40 "yargs": "^17.7.1"
41 },
42 "devDependencies": {
42 - "@types/babel__code-frame": "^7.0.6",
43 "@babel/core": "^7.19.1",
44 "@babel/parser": "^7.19.1",
45 "@babel/plugin-syntax-typescript": "^7.18.6",
46 "@babel/plugin-transform-modules-commonjs": "^7.18.6",
47 "@babel/preset-react": "^7.18.6",
48 "@babel/traverse": "^7.19.1",
49 + "@types/babel__code-frame": "^7.0.6",
50 "@types/fbt": "^1.0.4",
51 + "@types/glob": "^8.1.0",
52 "@types/node": "^18.7.18",
53 "@typescript-eslint/eslint-plugin": "^5.51.0",
54 "@typescript-eslint/parser": "^5.51.0",
compiler/packages/snap/src/fixture-utils.ts
+38 -46
@@ -6,24 +6,16 @@
6 */
7
8 import fs from "fs/promises";
9 -import glob from "glob";
9 +import * as glob from "glob";
10 import path from "path";
11 import { FILTER_PATH, FIXTURES_PATH, SNAPSHOT_EXTENSION } from "./constants";
12
13 -const KIND_DEFAULT = "only";
13 const INPUT_EXTENSIONS = [".js", ".ts", ".jsx", ".tsx"];
14
16 -export type TestFilter =
17 - | {
18 - kind: "only";
19 - debug: boolean;
20 - paths: Array<string>;
21 - }
22 - | {
23 - kind: "skip";
24 - debug: boolean;
25 - paths: Array<string>;
26 - };
15 +export type TestFilter = {
16 + debug: boolean;
17 + paths: Array<string>;
18 +};
19
20 async function exists(file: string): Promise<boolean> {
21 try {
@@ -43,20 +35,6 @@ function stripExtension(filename: string, extensions: Array<string>): string {
35 return filename;
36 }
37
46 -function shouldSkip(filter: TestFilter | null, filterId: string) {
47 - if (filter) {
48 - if (filter.kind === "only" && filter.paths.indexOf(filterId) === -1) {
49 - return true;
50 - } else if (
51 - filter.kind === "skip" &&
52 - filter.paths.indexOf(filterId) !== -1
53 - ) {
54 - return true;
55 - }
56 - }
57 - return false;
58 -}
59 -
38 export async function readTestFilter(): Promise<TestFilter | null> {
39 if (!(await exists(FILTER_PATH))) {
40 throw new Error(`testfilter file not found at ${FILTER_PATH}`);
@@ -65,17 +43,12 @@ export async function readTestFilter(): Promise<TestFilter | null> {
43 const input = await fs.readFile(FILTER_PATH, "utf8");
44 const lines = input.trim().split("\n");
45
68 - let filter: "only" | "skip" = KIND_DEFAULT;
46 let debug: boolean = false;
47 const line0 = lines[0];
48 if (line0 != null) {
49 // Try to parse pragmas
50 let consumedLine0 = false;
51 if (line0.indexOf("@only") !== -1) {
75 - filter = "only";
76 - consumedLine0 = true;
77 - } else if (line0.indexOf("@skip") !== -1) {
78 - filter = "skip";
52 consumedLine0 = true;
53 }
54 if (line0.indexOf("@debug") !== -1) {
@@ -88,9 +61,8 @@ export async function readTestFilter(): Promise<TestFilter | null> {
61 }
62 }
63 return {
91 - kind: filter,
64 debug,
93 - paths: lines,
65 + paths: lines.filter((line) => !line.trimStart().startsWith("//")),
66 };
67 }
68
@@ -122,17 +94,27 @@ async function readInputFixtures(
94 rootDir: string,
95 filter: TestFilter | null
96 ): Promise<Map<string, { value: string; filepath: string }>> {
125 - const inputFiles = glob.sync(`**/*{${INPUT_EXTENSIONS.join(",")}}`, {
126 - cwd: rootDir,
127 - });
97 + let inputFiles: Array<string>;
98 + if (filter == null) {
99 + inputFiles = glob.sync(`**/*{${INPUT_EXTENSIONS.join(",")}}`, {
100 + cwd: rootDir,
101 + });
102 + } else {
103 + inputFiles = (
104 + await Promise.all(
105 + filter.paths.map((pattern) =>
106 + glob.glob(`${pattern}{${INPUT_EXTENSIONS.join(",")}}`, {
107 + cwd: rootDir,
108 + })
109 + )
110 + )
111 + ).flat();
112 + }
113 const inputs: Array<Promise<[string, { value: string; filepath: string }]>> =
114 [];
115 for (const filePath of inputFiles) {
116 // Do not include extensions in unique identifier for fixture
117 const partialPath = stripExtension(filePath, INPUT_EXTENSIONS);
133 - if (shouldSkip(filter, partialPath)) {
134 - continue;
135 - }
118 inputs.push(
119 fs.readFile(path.join(rootDir, filePath), "utf8").then((input) => {
120 return [
@@ -151,16 +133,26 @@ async function readOutputFixtures(
133 rootDir: string,
134 filter: TestFilter | null
135 ): Promise<Map<string, string>> {
154 - const outputFiles = glob.sync(`**/*${SNAPSHOT_EXTENSION}`, {
155 - cwd: rootDir,
156 - });
136 + let outputFiles: Array<string>;
137 + if (filter == null) {
138 + outputFiles = glob.sync(`**/*${SNAPSHOT_EXTENSION}`, {
139 + cwd: rootDir,
140 + });
141 + } else {
142 + outputFiles = (
143 + await Promise.all(
144 + filter.paths.map((pattern) =>
145 + glob.glob(`${pattern}${SNAPSHOT_EXTENSION}`, {
146 + cwd: rootDir,
147 + })
148 + )
149 + )
150 + ).flat();
151 + }
152 const outputs: Array<Promise<[string, string]>> = [];
153 for (const filePath of outputFiles) {
154 // Do not include extensions in unique identifier for fixture
155 const partialPath = stripExtension(filePath, [SNAPSHOT_EXTENSION]);
161 - if (shouldSkip(filter, partialPath)) {
162 - continue;
163 - }
156
157 const outputPath = path.join(rootDir, filePath);
158 const output: Promise<[string, string]> = fs
compiler/yarn.lock
+137 -22
@@ -1757,6 +1757,18 @@
1757 resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044"
1758 integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==
1759
1760 +"@isaacs/cliui@^8.0.2":
1761 + version "8.0.2"
1762 + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550"
1763 + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==
1764 + dependencies:
1765 + string-width "^5.1.2"
1766 + string-width-cjs "npm:string-width@^4.2.0"
1767 + strip-ansi "^7.0.1"
1768 + strip-ansi-cjs "npm:strip-ansi@^6.0.1"
1769 + wrap-ansi "^8.1.0"
1770 + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0"
1771 +
1772 "@istanbuljs/load-nyc-config@^1.0.0":
1773 version "1.1.0"
1774 resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced"
@@ -2581,6 +2593,11 @@
2593 node-addon-api "^3.2.1"
2594 node-gyp-build "^4.3.0"
2595
2596 +"@pkgjs/parseargs@^0.11.0":
2597 + version "0.11.0"
2598 + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33"
2599 + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==
2600 +
2601 "@pkgr/utils@^2.3.1":
2602 version "2.4.1"
2603 resolved "https://registry.yarnpkg.com/@pkgr/utils/-/utils-2.4.1.tgz#adf291d0357834c410ce80af16e711b56c7b1cd3"
@@ -3447,6 +3464,11 @@ ansi-regex@^5.0.1:
3464 resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
3465 integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
3466
3467 +ansi-regex@^6.0.1:
3468 + version "6.0.1"
3469 + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a"
3470 + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==
3471 +
3472 ansi-styles@^3.2.0, ansi-styles@^3.2.1:
3473 version "3.2.1"
3474 resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
@@ -3466,6 +3488,11 @@ ansi-styles@^5.0.0:
3488 resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b"
3489 integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==
3490
3491 +ansi-styles@^6.1.0:
3492 + version "6.2.1"
3493 + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5"
3494 + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
3495 +
3496 any-promise@^1.0.0:
3497 version "1.3.0"
3498 resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
@@ -4559,7 +4586,7 @@ cross-spawn@^6.0.5:
4586 shebang-command "^1.2.0"
4587 which "^1.2.9"
4588
4562 -cross-spawn@^7.0.2, cross-spawn@^7.0.3:
4589 +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
4590 version "7.0.3"
4591 resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
4592 integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
@@ -4934,6 +4961,11 @@ dreamopt@~0.6.0:
4961 dependencies:
4962 wordwrap ">=0.0.2"
4963
4964 +eastasianwidth@^0.2.0:
4965 + version "0.2.0"
4966 + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb"
4967 + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
4968 +
4969 ecc-jsbn@~0.1.1:
4970 version "0.1.2"
4971 resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
@@ -5903,6 +5935,14 @@ for-each@^0.3.3:
5935 dependencies:
5936 is-callable "^1.1.3"
5937
5938 +foreground-child@^3.1.0:
5939 + version "3.1.1"
5940 + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d"
5941 + integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==
5942 + dependencies:
5943 + cross-spawn "^7.0.0"
5944 + signal-exit "^4.0.1"
5945 +
5946 forever-agent@~0.6.1:
5947 version "0.6.1"
5948 resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
@@ -6148,6 +6188,17 @@ glob@7.1.7:
6188 once "^1.3.0"
6189 path-is-absolute "^1.0.0"
6190
6191 +glob@^10.3.10:
6192 + version "10.3.10"
6193 + resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b"
6194 + integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==
6195 + dependencies:
6196 + foreground-child "^3.1.0"
6197 + jackspeak "^2.3.5"
6198 + minimatch "^9.0.1"
6199 + minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
6200 + path-scurry "^1.10.1"
6201 +
6202 glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@~7.2.0:
6203 version "7.2.3"
6204 resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
@@ -7013,6 +7064,15 @@ iterator.prototype@^1.1.2:
7064 reflect.getprototypeof "^1.0.4"
7065 set-function-name "^2.0.1"
7066
7067 +jackspeak@^2.3.5:
7068 + version "2.3.6"
7069 + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8"
7070 + integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==
7071 + dependencies:
7072 + "@isaacs/cliui" "^8.0.2"
7073 + optionalDependencies:
7074 + "@pkgjs/parseargs" "^0.11.0"
7075 +
7076 jest-changed-files@^28.1.3:
7077 version "28.1.3"
7078 resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-28.1.3.tgz#d9aeee6792be3686c47cb988a8eaf82ff4238831"
@@ -8557,6 +8617,11 @@ lru-cache@^6.0.0:
8617 dependencies:
8618 yallist "^4.0.0"
8619
8620 +"lru-cache@^9.1.1 || ^10.0.0":
8621 + version "10.2.0"
8622 + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3"
8623 + integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==
8624 +
8625 lz-string@^1.4.4:
8626 version "1.4.4"
8627 resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26"
@@ -8689,6 +8754,13 @@ minimatch@^5.0.1:
8754 dependencies:
8755 brace-expansion "^2.0.1"
8756
8757 +minimatch@^9.0.1:
8758 + version "9.0.3"
8759 + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825"
8760 + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==
8761 + dependencies:
8762 + brace-expansion "^2.0.1"
8763 +
8764 minimist@0.0.8:
8765 version "0.0.8"
8766 resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
@@ -8704,6 +8776,11 @@ minimist@^1.2.6:
8776 resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18"
8777 integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==
8778
8779 +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0":
8780 + version "7.0.4"
8781 + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c"
8782 + integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==
8783 +
8784 mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3:
8785 version "0.5.3"
8786 resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113"
@@ -9307,6 +9384,14 @@ path-parse@^1.0.7:
9384 resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
9385 integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
9386
9387 +path-scurry@^1.10.1:
9388 + version "1.10.1"
9389 + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698"
9390 + integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==
9391 + dependencies:
9392 + lru-cache "^9.1.1 || ^10.0.0"
9393 + minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
9394 +
9395 path-to-regexp@^1.7.0:
9396 version "1.8.0"
9397 resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a"
@@ -10298,6 +10383,11 @@ signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7:
10383 resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
10384 integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
10385
10386 +signal-exit@^4.0.1:
10387 + version "4.1.0"
10388 + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04"
10389 + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
10390 +
10391 simple-concat@^1.0.0:
10392 version "1.0.1"
10393 resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f"
@@ -10510,6 +10600,15 @@ string-length@^4.0.1:
10600 char-regex "^1.0.2"
10601 strip-ansi "^6.0.0"
10602
10603 +"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
10604 + version "4.2.3"
10605 + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
10606 + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
10607 + dependencies:
10608 + emoji-regex "^8.0.0"
10609 + is-fullwidth-code-point "^3.0.0"
10610 + strip-ansi "^6.0.1"
10611 +
10612 string-width@^1.0.1:
10613 version "1.0.2"
10614 resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
@@ -10519,15 +10618,6 @@ string-width@^1.0.1:
10618 is-fullwidth-code-point "^1.0.0"
10619 strip-ansi "^3.0.0"
10620
10522 -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
10523 - version "4.2.3"
10524 - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
10525 - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
10526 - dependencies:
10527 - emoji-regex "^8.0.0"
10528 - is-fullwidth-code-point "^3.0.0"
10529 - strip-ansi "^6.0.1"
10530 -
10621 string-width@^3.0.0:
10622 version "3.1.0"
10623 resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
@@ -10537,6 +10627,15 @@ string-width@^3.0.0:
10627 is-fullwidth-code-point "^2.0.0"
10628 strip-ansi "^5.1.0"
10629
10630 +string-width@^5.0.1, string-width@^5.1.2:
10631 + version "5.1.2"
10632 + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794"
10633 + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==
10634 + dependencies:
10635 + eastasianwidth "^0.2.0"
10636 + emoji-regex "^9.2.2"
10637 + strip-ansi "^7.0.1"
10638 +
10639 string.prototype.matchall@^4.0.8:
10640 version "4.0.8"
10641 resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3"
@@ -10619,6 +10718,13 @@ string_decoder@~1.1.1:
10718 dependencies:
10719 safe-buffer "~5.1.0"
10720
10721 +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
10722 + version "6.0.1"
10723 + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
10724 + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
10725 + dependencies:
10726 + ansi-regex "^5.0.1"
10727 +
10728 strip-ansi@^3.0.0, strip-ansi@^3.0.1:
10729 version "3.0.1"
10730 resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
@@ -10633,12 +10739,12 @@ strip-ansi@^5.1.0, strip-ansi@^5.2.0:
10739 dependencies:
10740 ansi-regex "^4.1.0"
10741
10636 -strip-ansi@^6.0.0, strip-ansi@^6.0.1:
10637 - version "6.0.1"
10638 - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
10639 - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
10742 +strip-ansi@^7.0.1:
10743 + version "7.1.0"
10744 + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45"
10745 + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==
10746 dependencies:
10641 - ansi-regex "^5.0.1"
10747 + ansi-regex "^6.0.1"
10748
10749 strip-bom@^3.0.0:
10750 version "3.0.0"
@@ -11568,6 +11674,15 @@ wordwrap@>=0.0.2:
11674 resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
11675 integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==
11676
11677 +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0:
11678 + version "7.0.0"
11679 + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
11680 + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
11681 + dependencies:
11682 + ansi-styles "^4.0.0"
11683 + string-width "^4.1.0"
11684 + strip-ansi "^6.0.0"
11685 +
11686 wrap-ansi@^6.2.0:
11687 version "6.2.0"
11688 resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53"
@@ -11577,14 +11692,14 @@ wrap-ansi@^6.2.0:
11692 string-width "^4.1.0"
11693 strip-ansi "^6.0.0"
11694
11580 -wrap-ansi@^7.0.0:
11581 - version "7.0.0"
11582 - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
11583 - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
11695 +wrap-ansi@^8.1.0:
11696 + version "8.1.0"
11697 + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"
11698 + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==
11699 dependencies:
11585 - ansi-styles "^4.0.0"
11586 - string-width "^4.1.0"
11587 - strip-ansi "^6.0.0"
11700 + ansi-styles "^6.1.0"
11701 + string-width "^5.0.1"
11702 + strip-ansi "^7.0.1"
11703
11704 wrappy@1:
11705 version "1.0.2"