@samitouri / QOS-React / commits / e210d08180

[flow] Upgrade Flow to 0.245.2 (#30919)

## Summary This PR bumps Flow all the way to the latest 0.245.2. Most of the suppressions comes from Flow v0.239.0's change to include undefined in the return of `Array.pop`. I also enabled `react.custom_jsx_typing=true` and added custom jsx typing to match the old behavior that `React.createElement` is effectively any typed. This is necessary since various builtin components like `React.Fragment` is actually symbol in the React repo instead of `React.AbstractComponent<...>`. It can be made more accurate by customizing the `React$CustomJSXFactory` type, but I will leave it to the React team to decide. ## How did you test this change? `yarn flow` for all the renderers

Sam Zhou committed Sep 9, 2024 at 08:41 UTC e210d08180a63f42079b91acaa7f6af15eef6d32
24 files changed +142 -20
package.json
+2 -2
@@ -63,8 +63,8 @@
63 "eslint-plugin-react-internal": "link:./scripts/eslint-rules",
64 "fbjs-scripts": "^3.0.1",
65 "filesize": "^6.0.1",
66 - "flow-bin": "^0.235.0",
67 - "flow-remove-types": "^2.235.0",
66 + "flow-bin": "^0.245.2",
67 + "flow-remove-types": "^2.245.2",
68 "glob": "^7.1.6",
69 "glob-stream": "^6.1.0",
70 "google-closure-compiler": "^20230206.0.0",
packages/internal-test-utils/internalAct.js
+2
@@ -163,6 +163,7 @@ export async function act<T>(scope: () => Thenable<T>): Thenable<T> {
163 throw thrownError;
164 }
165
166 + // $FlowFixMe[incompatible-return]
167 return result;
168 } finally {
169 const depth = actingUpdatesScopeDepth;
@@ -271,6 +272,7 @@ export async function serverAct<T>(scope: () => Thenable<T>): Thenable<T> {
272 throw thrownError;
273 }
274
275 + // $FlowFixMe[incompatible-return]
276 return result;
277 } finally {
278 if (typeof process === 'object') {
packages/react-client/src/ReactFlightReplyClient.js
+3
@@ -554,6 +554,7 @@ export function processReply(
554 const prefix = formFieldPrefix + refId + '_';
555 // $FlowFixMe[prop-missing]: FormData has forEach.
556 value.forEach((originalValue: string | File, originalKey: string) => {
557 + // $FlowFixMe[incompatible-call]
558 data.append(prefix + originalKey, originalValue);
559 });
560 return serializeFormDataReference(refId);
@@ -925,6 +926,7 @@ function defaultEncodeFormAction(
926 const prefixedData = new FormData();
927 // $FlowFixMe[prop-missing]
928 encodedFormData.forEach((value: string | File, key: string) => {
929 + // $FlowFixMe[incompatible-call]
930 prefixedData.append('$ACTION_' + identifierPrefix + ':' + key, value);
931 });
932 data = prefixedData;
@@ -1153,6 +1155,7 @@ const FunctionBind = Function.prototype.bind;
1155 const ArraySlice = Array.prototype.slice;
1156 function bind(this: Function): Function {
1157 // $FlowFixMe[unsupported-syntax]
1158 + // $FlowFixMe[prop-missing]
1159 const newFn = FunctionBind.apply(this, arguments);
1160 const reference = knownServerReferences.get(this);
1161 if (reference) {
packages/react-debug-tools/src/ReactDebugHooks.js
+1
@@ -1033,6 +1033,7 @@ function buildTree(
1033 }
1034 // Pop back the stack as many steps as were not common.
1035 for (let j = prevStack.length - 1; j > commonSteps; j--) {
1036 + // $FlowFixMe[incompatible-type]
1037 levelChildren = stackOfChildren.pop();
1038 }
1039 }
packages/react-devtools-shared/src/backend/profilingHooks.js
+3
@@ -274,16 +274,19 @@ export function createProfilingHooks({
274 }
275
276 const top = currentReactMeasuresStack.pop();
277 + // $FlowFixMe[incompatible-type]
278 if (top.type !== type) {
279 console.error(
280 'Unexpected type "%s" completed at %sms before "%s" completed.',
281 type,
282 currentTime,
283 + // $FlowFixMe[incompatible-use]
284 top.type,
285 );
286 }
287
288 // $FlowFixMe[cannot-write] This property should not be writable outside of this function.
289 + // $FlowFixMe[incompatible-use]
290 top.duration = currentTime - top.timestamp;
291
292 if (currentTimelineData) {
packages/react-devtools-shared/src/backend/utils.js
+2
@@ -299,10 +299,12 @@ export function formatConsoleArgumentsToSingleString(
299 if (args.length) {
300 const REGEXP = /(%?)(%([jds]))/g;
301
302 + // $FlowFixMe[incompatible-call]
303 formatted = formatted.replace(REGEXP, (match, escaped, ptn, flag) => {
304 let arg = args.shift();
305 switch (flag) {
306 case 's':
307 + // $FlowFixMe[unsafe-addition]
308 arg += '';
309 break;
310 case 'd':
packages/react-devtools-shared/src/backend/views/Highlighter/Overlay.js
+1
@@ -194,6 +194,7 @@ export default class Overlay {
194
195 while (this.rects.length > elements.length) {
196 const rect = this.rects.pop();
197 + // $FlowFixMe[incompatible-use]
198 rect.remove();
199 }
200 if (elements.length === 0) {
packages/react-devtools-shared/src/devtools/views/Profiler/CommitTreeBuilder.js
+4
@@ -391,18 +391,22 @@ const __printTree = (commitTree: CommitTree) => {
391 const id = queue.shift();
392 const depth = queue.shift();
393
394 + // $FlowFixMe[incompatible-call]
395 const node = nodes.get(id);
396 if (node == null) {
397 + // $FlowFixMe[incompatible-type]
398 throw Error(`Could not find node with id "${id}" in commit tree`);
399 }
400
401 console.log(
402 + // $FlowFixMe[incompatible-call]
403 `${'•'.repeat(depth)}${node.id}:${node.displayName || ''} ${
404 node.key ? `key:"${node.key}"` : ''
405 } (${node.treeBaseDuration})`,
406 );
407
408 node.children.forEach(childID => {
409 + // $FlowFixMe[unsafe-addition]
410 queue.push(childID, depth + 1);
411 });
412 }
packages/react-devtools-shared/src/devtools/views/utils.js
+4
@@ -142,10 +142,14 @@ export function serializeHooksForCopy(hooks: HooksTree | null): string {
142 const current = queue.pop();
143
144 // These aren't meaningful
145 + // $FlowFixMe[incompatible-use]
146 delete current.id;
147 + // $FlowFixMe[incompatible-use]
148 delete current.isStateEditable;
149
150 + // $FlowFixMe[incompatible-use]
151 if (current.subHooks.length > 0) {
152 + // $FlowFixMe[incompatible-use]
153 queue.push(...current.subHooks);
154 }
155 }
packages/react-devtools-shared/src/hook.js
+1
@@ -532,6 +532,7 @@ export function installHook(target: any): DevToolsHook | null {
532 const startStackFrame = openModuleRangesStack.pop();
533 const stopStackFrame = getTopStackFrameString(error);
534 if (stopStackFrame !== null) {
535 + // $FlowFixMe[incompatible-call]
536 moduleRanges.push([startStackFrame, stopStackFrame]);
537 }
538 }
packages/react-devtools-shared/src/utils.js
+2
@@ -475,6 +475,7 @@ export function parseElementDisplayNameFromBackend(
475 if (displayName.indexOf('(') >= 0) {
476 const matches = displayName.match(/[^()]+/g);
477 if (matches != null) {
478 + // $FlowFixMe[incompatible-type]
479 displayName = matches.pop();
480 hocDisplayNames = matches;
481 }
@@ -485,6 +486,7 @@ export function parseElementDisplayNameFromBackend(
486 }
487
488 return {
489 + // $FlowFixMe[incompatible-return]
490 formattedDisplayName: displayName,
491 hocDisplayNames,
492 compiledWithForget: false,
packages/react-devtools-timeline/src/import-worker/preprocessData.js
+1
@@ -202,6 +202,7 @@ function markWorkCompleted(
202 );
203 }
204
205 + // $FlowFixMe[incompatible-use]
206 const {measure, startTime} = stack.pop();
207 if (!measure) {
208 console.error('Could not find matching measure for type "%s".', type);
packages/react-dom/src/client/ReactDOMClientFB.js
+1
@@ -100,6 +100,7 @@ function flushSyncFromReconciler<R>(fn: (() => R) | void): R | void {
100 );
101 }
102 }
103 + // $FlowFixMe[incompatible-call]
104 return flushSyncWithoutWarningIfAlreadyRendering(fn);
105 }
106
packages/react-native-renderer/src/ReactNativeTypes.js
+2 -2
@@ -233,8 +233,8 @@ export type ReactNativeType = {
233 ): ?ElementRef<ElementType>,
234 unmountComponentAtNode(containerTag: number): void,
235 unmountComponentAtNodeAndRemoveContainer(containerTag: number): void,
236 - unstable_batchedUpdates: <T>(fn: (T) => void, bookkeeping: T) => void,
237 - __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: SecretInternalsType,
236 + +unstable_batchedUpdates: <T>(fn: (T) => void, bookkeeping: T) => void,
237 + +__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: SecretInternalsType,
238 ...
239 };
240
packages/react-server-dom-esm/src/ReactFlightESMReferences.js
+1 -1
@@ -49,7 +49,7 @@ const FunctionBind = Function.prototype.bind;
49 // $FlowFixMe[method-unbinding]
50 const ArraySlice = Array.prototype.slice;
51 function bind(this: ServerReference<any>): any {
52 - // $FlowFixMe[unsupported-syntax]
52 + // $FlowFixMe[prop-missing]
53 const newFn = FunctionBind.apply(this, arguments);
54 if (this.$$typeof === SERVER_REFERENCE_TAG) {
55 if (__DEV__) {
packages/react-server-dom-turbopack/src/ReactFlightTurbopackReferences.js
+1 -1
@@ -63,7 +63,7 @@ const FunctionBind = Function.prototype.bind;
63 // $FlowFixMe[method-unbinding]
64 const ArraySlice = Array.prototype.slice;
65 function bind(this: ServerReference<any>): any {
66 - // $FlowFixMe[unsupported-syntax]
66 + // $FlowFixMe[prop-missing]
67 const newFn = FunctionBind.apply(this, arguments);
68 if (this.$$typeof === SERVER_REFERENCE_TAG) {
69 if (__DEV__) {
packages/react-server-dom-webpack/src/ReactFlightWebpackReferences.js
+1
@@ -64,6 +64,7 @@ const FunctionBind = Function.prototype.bind;
64 const ArraySlice = Array.prototype.slice;
65 function bind(this: ServerReference<any>): any {
66 // $FlowFixMe[unsupported-syntax]
67 + // $FlowFixMe[prop-missing]
68 const newFn = FunctionBind.apply(this, arguments);
69 if (this.$$typeof === SERVER_REFERENCE_TAG) {
70 if (__DEV__) {
packages/react-server/src/ReactFlightActionServer.js
+1
@@ -93,6 +93,7 @@ export function decodeAction<T>(
93 // $FlowFixMe[prop-missing]
94 body.forEach((value: string | File, key: string) => {
95 if (!key.startsWith('$ACTION_')) {
96 + // $FlowFixMe[incompatible-call]
97 formData.append(key, value);
98 return;
99 }
packages/react-server/src/ReactFlightReplyServer.js
+1
@@ -978,6 +978,7 @@ function parseModelString(
978 // $FlowFixMe[prop-missing] FormData has forEach on it.
979 backingFormData.forEach((entry: File | string, entryKey: string) => {
980 if (entryKey.startsWith(formPrefix)) {
981 + // $FlowFixMe[incompatible-call]
982 data.append(entryKey.slice(formPrefix.length), entry);
983 }
984 });
packages/react-test-renderer/src/ReactTestRenderer.js
+4
@@ -166,10 +166,14 @@ function flatten(arr) {
166 const stack = [{i: 0, array: arr}];
167 while (stack.length) {
168 const n = stack.pop();
169 + // $FlowFixMe[incompatible-use]
170 while (n.i < n.array.length) {
171 + // $FlowFixMe[incompatible-use]
172 const el = n.array[n.i];
173 + // $FlowFixMe[incompatible-use]
174 n.i += 1;
175 if (isArray(el)) {
176 + // $FlowFixMe[incompatible-call]
177 stack.push(n);
178 stack.push({i: 0, array: el});
179 break;
packages/scheduler/src/SchedulerMinHeap.js
+2
@@ -31,7 +31,9 @@ export function pop<T: Node>(heap: Heap<T>): T | null {
31 const first = heap[0];
32 const last = heap.pop();
33 if (last !== first) {
34 + // $FlowFixMe[incompatible-type]
35 heap[0] = last;
36 + // $FlowFixMe[incompatible-call]
37 siftDown(heap, last, 0);
38 }
39 return first;
scripts/flow/config/flowconfig
+3
@@ -31,9 +31,12 @@
31
32 [lints]
33 untyped-type-import=error
34 +internal-type=off
35 +deprecated-type=off
36
37 [options]
38 munge_underscores=false
39 +react.custom_jsx_typing=true
40
41 # Substituted by createFlowConfig.js:
42 %REACT_RENDERER_FLOW_OPTIONS%
scripts/flow/environment.js
+3 -1
@@ -26,7 +26,7 @@ declare const AggregateError: Class<Error>;
26 declare const FinalizationRegistry: any;
27
28 declare module 'create-react-class' {
29 - declare const exports: React$CreateClass;
29 + declare const exports: $FlowFixMe;
30 }
31
32 declare interface ConsoleTask {
@@ -46,6 +46,8 @@ declare opaque type React$Element<
46 +ref: any,
47 };
48
49 +declare type React$CustomJSXFactory = any;
50 +
51 declare const trustedTypes: {
52 isHTML: (value: any) => boolean,
53 isScript: (value: any) => boolean,
yarn.lock
+96 -13
@@ -7366,7 +7366,7 @@ eslint-utils@^2.0.0, eslint-utils@^2.1.0:
7366 dependencies:
7367 eslint-visitor-keys "^1.1.0"
7368
7369 -"eslint-v7@npm:eslint@^7.7.0", eslint@^7.7.0:
7369 +"eslint-v7@npm:eslint@^7.7.0":
7370 version "7.32.0"
7371 resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d"
7372 integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==
@@ -7526,6 +7526,52 @@ eslint@8.57.0:
7526 strip-ansi "^6.0.1"
7527 text-table "^0.2.0"
7528
7529 +eslint@^7.7.0:
7530 + version "7.32.0"
7531 + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d"
7532 + integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==
7533 + dependencies:
7534 + "@babel/code-frame" "7.12.11"
7535 + "@eslint/eslintrc" "^0.4.3"
7536 + "@humanwhocodes/config-array" "^0.5.0"
7537 + ajv "^6.10.0"
7538 + chalk "^4.0.0"
7539 + cross-spawn "^7.0.2"
7540 + debug "^4.0.1"
7541 + doctrine "^3.0.0"
7542 + enquirer "^2.3.5"
7543 + escape-string-regexp "^4.0.0"
7544 + eslint-scope "^5.1.1"
7545 + eslint-utils "^2.1.0"
7546 + eslint-visitor-keys "^2.0.0"
7547 + espree "^7.3.1"
7548 + esquery "^1.4.0"
7549 + esutils "^2.0.2"
7550 + fast-deep-equal "^3.1.3"
7551 + file-entry-cache "^6.0.1"
7552 + functional-red-black-tree "^1.0.1"
7553 + glob-parent "^5.1.2"
7554 + globals "^13.6.0"
7555 + ignore "^4.0.6"
7556 + import-fresh "^3.0.0"
7557 + imurmurhash "^0.1.4"
7558 + is-glob "^4.0.0"
7559 + js-yaml "^3.13.1"
7560 + json-stable-stringify-without-jsonify "^1.0.1"
7561 + levn "^0.4.1"
7562 + lodash.merge "^4.6.2"
7563 + minimatch "^3.0.4"
7564 + natural-compare "^1.4.0"
7565 + optionator "^0.9.1"
7566 + progress "^2.0.0"
7567 + regexpp "^3.1.0"
7568 + semver "^7.2.1"
7569 + strip-ansi "^6.0.0"
7570 + strip-json-comments "^3.1.0"
7571 + table "^6.0.9"
7572 + text-table "^0.2.0"
7573 + v8-compile-cache "^2.0.3"
7574 +
7575 espree@10.0.1, espree@^10.0.1:
7576 version "10.0.1"
7577 resolved "https://registry.yarnpkg.com/espree/-/espree-10.0.1.tgz#600e60404157412751ba4a6f3a2ee1a42433139f"
@@ -8296,17 +8342,17 @@ flatted@^3.2.9:
8342 resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a"
8343 integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==
8344
8299 -flow-bin@^0.235.0:
8300 - version "0.235.1"
8301 - resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.235.1.tgz#7dfca9c480bb7cb83fa3caca58386e9beca09bc3"
8302 - integrity sha512-SuXw5NQDIdSBMg/NgvS5mzdI6dPEYWubnucnYno9wWLd6xoK1nkH6t2Dn2GsML9bIoVqp3E/ni1jo18A4G4FrQ==
8345 +flow-bin@^0.245.2:
8346 + version "0.245.2"
8347 + resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.245.2.tgz#ab5cd2115a8b57cc91c0d84add105c7098418f4c"
8348 + integrity sha512-1rFzkb7OoknVovimQvB+2Dq2vYP+guqSZAb4Cnnh0YsIdAOU7upCwnLHBOhMSXvEp6+J6tDMe9G8KwTAB8aI/g==
8349
8304 -flow-remove-types@^2.235.0:
8305 - version "2.238.2"
8306 - resolved "https://registry.yarnpkg.com/flow-remove-types/-/flow-remove-types-2.238.2.tgz#85c9d26e83ba395f0206a23bce438223bc035609"
8307 - integrity sha512-WJXRomjPiZ34nG14y7AceoPxg1L00FxjPSA3TDBTG2OPt8QFNtiYEmO4/3WG58n3C4wjxyVuoE6KjxQIvCDyjw==
8350 +flow-remove-types@^2.245.2:
8351 + version "2.245.2"
8352 + resolved "https://registry.yarnpkg.com/flow-remove-types/-/flow-remove-types-2.245.2.tgz#ccc7b8db25609833f9bf549bd025e740f023464f"
8353 + integrity sha512-p4rWHk20Vp8/pu9MOVi26r+r8hYpZ1vk+9OsFcJnKc/oUYJBxmTL8/fBlIo4/LJ9aLOrAeHwO1PnSsU6Z7gVsw==
8354 dependencies:
8309 - hermes-parser "0.22.0"
8355 + hermes-parser "0.23.1"
8356 pirates "^3.0.2"
8357 vlq "^0.2.1"
8358
@@ -9138,6 +9184,11 @@ hermes-estree@0.23.0:
9184 resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.23.0.tgz#89c5419877b9d6bce4bb616821f496f5c5daddbc"
9185 integrity sha512-Rkp0PNLGpORw4ktsttkVbpYJbrYKS3hAnkxu8D9nvQi6LvSbuPa+tYw/t2u3Gjc35lYd/k95YkjqyTcN4zspag==
9186
9187 +hermes-estree@0.23.1:
9188 + version "0.23.1"
9189 + resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.23.1.tgz#d0bac369a030188120ee7024926aabe5a9f84fdb"
9190 + integrity sha512-eT5MU3f5aVhTqsfIReZ6n41X5sYn4IdQL0nvz6yO+MMlPxw49aSARHLg/MSehQftyjnrE8X6bYregzSumqc6cg==
9191 +
9192 hermes-parser@0.22.0, hermes-parser@^0.22.0:
9193 version "0.22.0"
9194 resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.22.0.tgz#fc8e0e6c7bfa8db85b04c9f9544a102c4fcb4040"
@@ -9152,6 +9203,13 @@ hermes-parser@0.23.0:
9203 dependencies:
9204 hermes-estree "0.23.0"
9205
9206 +hermes-parser@0.23.1:
9207 + version "0.23.1"
9208 + resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.23.1.tgz#e5de648e664f3b3d84d01b48fc7ab164f4b68205"
9209 + integrity sha512-oxl5h2DkFW83hT4DAUJorpah8ou4yvmweUzLJmmr6YV2cezduCdlil1AvU/a/xSsAFo4WUcNA4GoV5Bvq6JffA==
9210 + dependencies:
9211 + hermes-estree "0.23.1"
9212 +
9213 homedir-polyfill@^1.0.0, homedir-polyfill@^1.0.1:
9214 version "1.0.3"
9215 resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8"
@@ -15083,7 +15141,7 @@ string-natural-compare@^3.0.1:
15141 resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4"
15142 integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==
15143
15086 -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
15144 +"string-width-cjs@npm:string-width@^4.2.0":
15145 version "4.2.3"
15146 resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
15147 integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@@ -15118,6 +15176,15 @@ string-width@^4.0.0:
15176 is-fullwidth-code-point "^3.0.0"
15177 strip-ansi "^6.0.0"
15178
15179 +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
15180 + version "4.2.3"
15181 + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
15182 + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
15183 + dependencies:
15184 + emoji-regex "^8.0.0"
15185 + is-fullwidth-code-point "^3.0.0"
15186 + strip-ansi "^6.0.1"
15187 +
15188 string-width@^5.0.1, string-width@^5.1.2:
15189 version "5.1.2"
15190 resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794"
@@ -15178,7 +15245,7 @@ string_decoder@~1.1.1:
15245 dependencies:
15246 safe-buffer "~5.1.0"
15247
15181 -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
15248 +"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
15249 version "6.0.1"
15250 resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
15251 integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
@@ -15206,6 +15273,13 @@ strip-ansi@^5.1.0:
15273 dependencies:
15274 ansi-regex "^4.1.0"
15275
15276 +strip-ansi@^6.0.0, strip-ansi@^6.0.1:
15277 + version "6.0.1"
15278 + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
15279 + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
15280 + dependencies:
15281 + ansi-regex "^5.0.1"
15282 +
15283 strip-ansi@^7.0.1:
15284 version "7.1.0"
15285 resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45"
@@ -16673,7 +16747,7 @@ workerize-loader@^2.0.2:
16747 dependencies:
16748 loader-utils "^2.0.0"
16749
16676 -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0:
16750 +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
16751 version "7.0.0"
16752 resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
16753 integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
@@ -16691,6 +16765,15 @@ wrap-ansi@^6.2.0:
16765 string-width "^4.1.0"
16766 strip-ansi "^6.0.0"
16767
16768 +wrap-ansi@^7.0.0:
16769 + version "7.0.0"
16770 + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
16771 + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
16772 + dependencies:
16773 + ansi-styles "^4.0.0"
16774 + string-width "^4.1.0"
16775 + strip-ansi "^6.0.0"
16776 +
16777 wrap-ansi@^8.1.0:
16778 version "8.1.0"
16779 resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"