[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"