Update Flow to 0.279 (#34277)
Multiple of these version upgrades required minor additional annotations.
Jan Kassens committed
Aug 25, 2025 at 11:02 UTC
df10309e2b884868d2032a4d6506714b3953b027
25 files changed
+104
-70
.eslintrc.js
+3
@@ -583,8 +583,11 @@ module.exports = {
583
mixin$Animatable: 'readonly',
584
MouseEventHandler: 'readonly',
585
NavigateEvent: 'readonly',
586
+ PerformanceMeasureOptions: 'readonly',
587
PropagationPhases: 'readonly',
588
PropertyDescriptor: 'readonly',
589
+ PropertyDescriptorMap: 'readonly',
590
+ Proxy$traps: 'readonly',
591
React$Component: 'readonly',
592
React$Config: 'readonly',
593
React$Context: 'readonly',
package.json
+4
-4
@@ -74,15 +74,15 @@
74
"eslint-plugin-react-internal": "link:./scripts/eslint-rules",
75
"fbjs-scripts": "^3.0.1",
76
"filesize": "^6.0.1",
77
- "flow-bin": "^0.274",
78
- "flow-remove-types": "^2.274",
77
+ "flow-bin": "^0.279.0",
78
+ "flow-remove-types": "^2.279.0",
79
"flow-typed": "^4.1.1",
80
"glob": "^7.1.6",
81
"glob-stream": "^6.1.0",
82
"google-closure-compiler": "^20230206.0.0",
83
"gzip-size": "^5.1.1",
84
- "hermes-eslint": "^0.25.1",
85
- "hermes-parser": "^0.25.1",
84
+ "hermes-eslint": "^0.32.0",
85
+ "hermes-parser": "^0.32.0",
86
"jest": "^29.4.2",
87
"jest-cli": "^29.4.2",
88
"jest-diff": "^29.4.2",
packages/react-client/src/ReactFlightPerformanceTrack.js
+2
-2
@@ -153,7 +153,7 @@ export function logComponentAborted(
153
const entryName =
154
isPrimaryEnv || env === undefined ? name : name + ' [' + env + ']';
155
if (__DEV__) {
156
- const properties = [
156
+ const properties: Array<[string, string]> = [
157
[
158
'Aborted',
159
'The stream was aborted before this Component finished rendering.',
@@ -215,7 +215,7 @@ export function logComponentErrored(
215
String(error.message)
216
: // eslint-disable-next-line react-internal/safe-string-coercion
217
String(error);
218
- const properties = [['Error', message]];
218
+ const properties: Array<[string, string]> = [['Error', message]];
219
if (componentInfo.key != null) {
220
addValueToProperties('key', componentInfo.key, properties, 0, '');
221
}
packages/react-debug-tools/src/ReactDebugHooks.js
+1
-1
@@ -789,7 +789,7 @@ const Dispatcher: DispatcherType = {
789
790
// create a proxy to throw a custom error
791
// in case future versions of React adds more hooks
792
-const DispatcherProxyHandler = {
792
+const DispatcherProxyHandler: Proxy$traps<DispatcherType> = {
793
get(target: DispatcherType, prop: string) {
794
if (target.hasOwnProperty(prop)) {
795
// $FlowFixMe[invalid-computed-prop]
packages/react-devtools-shared/src/backend/fiber/renderer.js
+1
-1
@@ -2217,7 +2217,7 @@ export function attach(
2217
}
2218
if (typeof instance.getClientRects === 'function') {
2219
// DOM
2220
- const result = [];
2220
+ const result: Array<Rect> = [];
2221
const doc = instance.ownerDocument;
2222
const win = doc && doc.defaultView;
2223
const scrollX = win ? win.scrollX : 0;
packages/react-devtools-shared/src/devtools/views/Components/InspectedElementHooksTree.js
+4
-1
@@ -223,7 +223,10 @@ function HookView({
223
const hookDisplayName = hookName ? (
224
<>
225
{name}
226
- {!!hookName && <span className={styles.HookName}>({hookName})</span>}
226
+ {
227
+ // $FlowFixMe[constant-condition]
228
+ !!hookName && <span className={styles.HookName}>({hookName})</span>
229
+ }
230
</>
231
) : (
232
name
packages/react-devtools-shared/src/devtools/views/ModalDialog.js
+1
-1
@@ -75,7 +75,7 @@ function dialogReducer(state: State, action: Action) {
75
content: action.content,
76
id: action.id,
77
title: action.title || null,
78
- },
78
+ } as Dialog,
79
],
80
};
81
default:
packages/react-devtools-shared/src/devtools/views/Profiler/Tooltip.js
+8
-2
@@ -64,7 +64,7 @@ function getTooltipPosition(
64
mouseY: number,
65
width: number,
66
},
67
-) {
67
+): {left: string, top: string} {
68
const {height, mouseX, mouseY, width} = mousePosition;
69
let top: number | string = 0;
70
let left: number | string = 0;
@@ -108,7 +108,13 @@ function getMousePosition(
108
}
109
}
110
111
- const {height, left, top, width} = targetContainer.getBoundingClientRect();
111
+ const {height, left, top, width} =
112
+ targetContainer.getBoundingClientRect() as {
113
+ height: number,
114
+ left: number,
115
+ top: number,
116
+ width: number,
117
+ };
118
119
const mouseX = mouseEvent.clientX - left;
120
const mouseY = mouseEvent.clientY - top;
packages/react-devtools-shared/src/hooks/SourceMapConsumer.js
+10
-2
@@ -145,13 +145,21 @@ type Section = {
145
};
146
147
function IndexedSourceMapConsumer(sourceMapJSON: IndexSourceMap) {
148
- let lastOffset = {
148
+ let lastOffset: {
149
+ line: number,
150
+ column: number,
151
+ ...
152
+ } = {
153
line: -1,
154
column: 0,
155
};
156
157
const sections: Array<Section> = sourceMapJSON.sections.map(section => {
154
- const offset = section.offset;
158
+ const offset: {
159
+ line: number,
160
+ column: number,
161
+ ...
162
+ } = section.offset;
163
const offsetLine = offset.line;
164
const offsetColumn = offset.column;
165
packages/react-devtools-shell/src/app/InspectableElements/Contexts.js
+1
-1
@@ -28,7 +28,7 @@ const contextData = {
28
bool: true,
29
func: someNamedFunction,
30
number: 123,
31
- object: {outer: {inner: {}}},
31
+ object: {outer: {inner: {} as {...}}},
32
string: 'abc',
33
symbol: Symbol.for('symbol'),
34
null: null,
packages/react-devtools-timeline/src/import-worker/preprocessData.js
+2
-1
@@ -28,6 +28,7 @@ import type {
28
TimelineData,
29
SchedulingEvent,
30
SuspenseEvent,
31
+ Snapshot,
32
} from '../types';
33
import {
34
REACT_TOTAL_NUM_LANES,
@@ -350,7 +351,7 @@ function processScreenshot(
351
) {
352
const encodedSnapshot = event.args.snapshot; // Base 64 encoded
353
353
- const snapshot = {
354
+ const snapshot: Snapshot = {
355
height: 0,
356
image: null,
357
imageSource: `data:image/png;base64,${encodedSnapshot}`,
packages/react-devtools-timeline/src/view-base/vertical-scroll-overflow/withVerticalScrollbarLayout.js
+3
-3
@@ -7,7 +7,7 @@
7
* @flow
8
*/
9
10
-import type {Layouter} from '../layouter';
10
+import type {LayoutInfo, Layouter} from '../layouter';
11
12
/**
13
* Assumes {@param layout} will only contain 2 views.
@@ -25,7 +25,7 @@ export const withVerticalScrollbarLayout: Layouter = (
25
? scrollbarLayoutInfo.view.desiredSize().width
26
: 0;
27
28
- const laidOutContentLayoutInfo = {
28
+ const laidOutContentLayoutInfo: LayoutInfo = {
29
...contentLayoutInfo,
30
frame: {
31
origin: contentLayoutInfo.view.frame.origin,
@@ -35,7 +35,7 @@ export const withVerticalScrollbarLayout: Layouter = (
35
},
36
},
37
};
38
- const laidOutScrollbarLayoutInfo = {
38
+ const laidOutScrollbarLayoutInfo: LayoutInfo = {
39
...scrollbarLayoutInfo,
40
frame: {
41
origin: {
packages/react-dom-bindings/src/client/ReactFiberConfigDOM.js
+1
@@ -2274,6 +2274,7 @@ function mergeTranslate(translateA: ?string, translateB: ?string): string {
2274
return translateB || '';
2275
}
2276
if (!translateB || translateB === 'none') {
2277
+ // $FlowFixMe[constant-condition]
2278
return translateA || '';
2279
}
2280
const partsA = translateA.split(' ');
packages/react-reconciler/src/ReactCapturedValue.js
+1
-1
@@ -30,7 +30,7 @@ export function createCapturedValueAtFiber<T>(
30
if (existing !== undefined) {
31
return existing;
32
}
33
- const captured = {
33
+ const captured: CapturedValue<T> = {
34
value,
35
source,
36
stack: getStackByFiberInDevAndProd(source),
packages/react-reconciler/src/ReactFiberPerformanceTrack.js
+4
-4
@@ -179,7 +179,7 @@ const reusableComponentDevToolDetails = {
179
track: COMPONENTS_TRACK,
180
};
181
182
-const reusableComponentOptions = {
182
+const reusableComponentOptions: PerformanceMeasureOptions = {
183
start: -0,
184
end: -0,
185
detail: {
@@ -351,7 +351,7 @@ export function logComponentErrored(
351
// error boundary itself.
352
debugTask = fiber._debugTask;
353
}
354
- const options = {
354
+ const options: PerformanceMeasureOptions = {
355
start: startTime,
356
end: endTime,
357
detail: {
@@ -992,7 +992,7 @@ export function logRecoveredRenderPhase(
992
String(error);
993
properties.push(['Recoverable Error', message]);
994
}
995
- const options = {
995
+ const options: PerformanceMeasureOptions = {
996
start: startTime,
997
end: endTime,
998
detail: {
@@ -1199,7 +1199,7 @@ export function logCommitErrored(
1199
String(error);
1200
properties.push(['Error', message]);
1201
}
1202
- const options = {
1202
+ const options: PerformanceMeasureOptions = {
1203
start: startTime,
1204
end: endTime,
1205
detail: {
packages/react-server-dom-esm/src/ReactFlightESMReferences.js
+4
-4
@@ -66,7 +66,7 @@ function bind(this: ServerReference<any>): any {
66
const $$bound = {value: this.$$bound ? this.$$bound.concat(args) : args};
67
return Object.defineProperties(
68
(newFn: any),
69
- __DEV__
69
+ (__DEV__
70
? {
71
$$typeof,
72
$$id,
@@ -82,7 +82,7 @@ function bind(this: ServerReference<any>): any {
82
$$id,
83
$$bound,
84
bind: {value: bind, configurable: true},
85
- },
85
+ }) as PropertyDescriptorMap,
86
);
87
}
88
return newFn;
@@ -101,7 +101,7 @@ export function registerServerReference<T: Function>(
101
const $$bound = {value: null, configurable: true};
102
return Object.defineProperties(
103
(reference: any),
104
- __DEV__
104
+ (__DEV__
105
? {
106
$$typeof,
107
$$id,
@@ -117,6 +117,6 @@ export function registerServerReference<T: Function>(
117
$$id,
118
$$bound,
119
bind: {value: bind, configurable: true},
120
- },
120
+ }) as PropertyDescriptorMap,
121
);
122
}
packages/react-server-dom-parcel/src/ReactFlightParcelReferences.js
+4
-4
@@ -73,7 +73,7 @@ function bind(this: ServerReference<any>): any {
73
const $$bound = {value: this.$$bound ? this.$$bound.concat(args) : args};
74
return Object.defineProperties(
75
(newFn: any),
76
- __DEV__
76
+ (__DEV__
77
? {
78
$$typeof,
79
$$id,
@@ -89,7 +89,7 @@ function bind(this: ServerReference<any>): any {
89
$$id,
90
$$bound,
91
bind: {value: bind, configurable: true},
92
- },
92
+ }) as PropertyDescriptorMap,
93
);
94
}
95
return newFn;
@@ -108,7 +108,7 @@ export function registerServerReference<T>(
108
const $$bound = {value: null, configurable: true};
109
return Object.defineProperties(
110
(reference: any),
111
- __DEV__
111
+ (__DEV__
112
? {
113
$$typeof,
114
$$id,
@@ -124,6 +124,6 @@ export function registerServerReference<T>(
124
$$id,
125
$$bound,
126
bind: {value: bind, configurable: true},
127
- },
127
+ }) as PropertyDescriptorMap,
128
);
129
}
packages/react-server-dom-parcel/src/server/ReactFlightDOMServerBrowser.js
+1
-1
@@ -240,7 +240,7 @@ export function prerender(
240
});
241
}
242
243
-let serverManifest = {};
243
+let serverManifest: ServerManifest = {};
244
export function registerServerActions(manifest: ServerManifest) {
245
// This function is called by the bundler to register the manifest.
246
serverManifest = manifest;
packages/react-server-dom-parcel/src/server/ReactFlightDOMServerEdge.js
+1
-1
@@ -245,7 +245,7 @@ export function prerender(
245
});
246
}
247
248
-let serverManifest = {};
248
+let serverManifest: ServerManifest = {};
249
export function registerServerActions(manifest: ServerManifest) {
250
// This function is called by the bundler to register the manifest.
251
serverManifest = manifest;
packages/react-server-dom-parcel/src/server/ReactFlightDOMServerNode.js
+1
-1
@@ -554,7 +554,7 @@ export function prerender(
554
});
555
}
556
557
-let serverManifest = {};
557
+let serverManifest: ServerManifest = {};
558
export function registerServerActions(manifest: ServerManifest) {
559
// This function is called by the bundler to register the manifest.
560
serverManifest = manifest;
packages/react-server-dom-turbopack/src/ReactFlightTurbopackReferences.js
+5
-5
@@ -80,7 +80,7 @@ function bind(this: ServerReference<any>): any {
80
const $$bound = {value: this.$$bound ? this.$$bound.concat(args) : args};
81
return Object.defineProperties(
82
(newFn: any),
83
- __DEV__
83
+ (__DEV__
84
? {
85
$$typeof,
86
$$id,
@@ -96,7 +96,7 @@ function bind(this: ServerReference<any>): any {
96
$$id,
97
$$bound,
98
bind: {value: bind, configurable: true},
99
- },
99
+ }) as PropertyDescriptorMap,
100
);
101
}
102
return newFn;
@@ -115,7 +115,7 @@ export function registerServerReference<T: Function>(
115
const $$bound = {value: null, configurable: true};
116
return Object.defineProperties(
117
(reference: any),
118
- __DEV__
118
+ (__DEV__
119
? {
120
$$typeof,
121
$$id,
@@ -131,13 +131,13 @@ export function registerServerReference<T: Function>(
131
$$id,
132
$$bound,
133
bind: {value: bind, configurable: true},
134
- },
134
+ }) as PropertyDescriptorMap,
135
);
136
}
137
138
const PROMISE_PROTOTYPE = Promise.prototype;
139
140
-const deepProxyHandlers = {
140
+const deepProxyHandlers: Proxy$traps<mixed> = {
141
get: function (
142
target: Function,
143
name: string | symbol,
packages/react-server-dom-webpack/src/ReactFlightWebpackReferences.js
+7
-7
@@ -80,7 +80,7 @@ function bind(this: ServerReference<any>): any {
80
const $$bound = {value: this.$$bound ? this.$$bound.concat(args) : args};
81
return Object.defineProperties(
82
(newFn: any),
83
- __DEV__
83
+ (__DEV__
84
? {
85
$$typeof,
86
$$id,
@@ -96,7 +96,7 @@ function bind(this: ServerReference<any>): any {
96
$$id,
97
$$bound,
98
bind: {value: bind, configurable: true},
99
- },
99
+ }) as PropertyDescriptorMap,
100
);
101
}
102
return newFn;
@@ -116,7 +116,7 @@ export function registerServerReference<T: Function>(
116
return Object.defineProperties(
117
(reference: any),
118
__DEV__
119
- ? {
119
+ ? ({
120
$$typeof,
121
$$id,
122
$$bound,
@@ -125,19 +125,19 @@ export function registerServerReference<T: Function>(
125
configurable: true,
126
},
127
bind: {value: bind, configurable: true},
128
- }
129
- : {
128
+ } as PropertyDescriptorMap)
129
+ : ({
130
$$typeof,
131
$$id,
132
$$bound,
133
bind: {value: bind, configurable: true},
134
- },
134
+ } as PropertyDescriptorMap),
135
);
136
}
137
138
const PROMISE_PROTOTYPE = Promise.prototype;
139
140
-const deepProxyHandlers = {
140
+const deepProxyHandlers: Proxy$traps<mixed> = {
141
get: function (
142
target: Function,
143
name: string | symbol,
packages/react-server/src/ReactFizzServer.js
+15
-3
@@ -1375,7 +1375,11 @@ function renderSuspenseBoundary(
1375
// where we try to skip rendering the fallback if the content itself can render synchronously
1376
const trackedPostpones = request.trackedPostpones;
1377
1378
- const fallbackKeyPath = [keyPath[0], 'Suspense Fallback', keyPath[2]];
1378
+ const fallbackKeyPath: KeyNode = [
1379
+ keyPath[0],
1380
+ 'Suspense Fallback',
1381
+ keyPath[2],
1382
+ ];
1383
const fallbackReplayNode: ReplayNode = [
1384
fallbackKeyPath[1],
1385
fallbackKeyPath[2],
@@ -1575,7 +1579,11 @@ function renderSuspenseBoundary(
1579
task.row = prevRow;
1580
}
1581
1578
- const fallbackKeyPath = [keyPath[0], 'Suspense Fallback', keyPath[2]];
1582
+ const fallbackKeyPath: KeyNode = [
1583
+ keyPath[0],
1584
+ 'Suspense Fallback',
1585
+ keyPath[2],
1586
+ ];
1587
// We create suspended task for the fallback because we don't want to actually work
1588
// on it yet in case we finish the main content, so we queue for later.
1589
const suspendedFallbackTask = createRenderTask(
@@ -1744,7 +1752,11 @@ function replaySuspenseBoundary(
1752
task.row = prevRow;
1753
}
1754
1747
- const fallbackKeyPath = [keyPath[0], 'Suspense Fallback', keyPath[2]];
1755
+ const fallbackKeyPath: KeyNode = [
1756
+ keyPath[0],
1757
+ 'Suspense Fallback',
1758
+ keyPath[2],
1759
+ ];
1760
1761
// We create suspended task for the fallback because we don't want to actually work
1762
// on it yet in case we finish the main content, so we queue for later.
packages/react-server/src/ReactFlightServerTemporaryReferences.js
+1
-1
@@ -32,7 +32,7 @@ export function resolveTemporaryReference<T>(
32
return temporaryReferences.get(temporaryReference);
33
}
34
35
-const proxyHandlers = {
35
+const proxyHandlers: Proxy$traps<mixed> = {
36
get: function (
37
target: Function,
38
name: string | symbol,
yarn.lock
+19
-19
@@ -9306,12 +9306,12 @@ flatted@^3.2.9:
9306
resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a"
9307
integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==
9308
9309
-flow-bin@^0.274:
9310
- version "0.274.2"
9311
- resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.274.2.tgz#79cff569aab38eb04f6b1e64b899c932a51444a4"
9312
- integrity sha512-vTF+5hiC5qymweFKj7xs5ABlDqMWbB2fPkYC4MI32m652dFYsq/zvEVNc2M09udwAzplLcMIK2O9VswPfd8Isw==
9309
+flow-bin@^0.279.0:
9310
+ version "0.279.0"
9311
+ resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.279.0.tgz#06e502a51d735083d715ef769f43bdcb0fc2bb61"
9312
+ integrity sha512-Xf0T82atOcEf5auHvJfUF+wWIxieBuUJZBu2hlAizdhAzwqSJic74ZLaL6N5SsE0SY9PxPf3Z/lBU7iRpRa9Lw==
9313
9314
-flow-remove-types@^2.274:
9314
+flow-remove-types@^2.279.0:
9315
version "2.279.0"
9316
resolved "https://registry.yarnpkg.com/flow-remove-types/-/flow-remove-types-2.279.0.tgz#3a3388d9158eba0f82c40d80d31d9640b883a3f5"
9317
integrity sha512-bPFloMR/A2b/r/sIsf7Ix0LaMicCJNjwhXc4xEEQVzJCIz5u7C7XDaEOXOiqveKlCYK7DcBNn6R01Cbbc9gsYA==
@@ -10208,14 +10208,14 @@ hasown@^2.0.0, hasown@^2.0.2:
10208
dependencies:
10209
function-bind "^1.1.2"
10210
10211
-hermes-eslint@^0.25.1:
10212
- version "0.25.1"
10213
- resolved "https://registry.yarnpkg.com/hermes-eslint/-/hermes-eslint-0.25.1.tgz#e7d2d845256705d5e2d5cf69dc79032ac3921bb3"
10214
- integrity sha512-nPz9+oyejT1zsIwoJ2pWdUvLcN1i+tbaWCOD8PpNBYQtnHXaPXImZp/6zZHnm3bo/DoFcAgh8+SNcxLFxh7m/A==
10211
+hermes-eslint@^0.32.0:
10212
+ version "0.32.0"
10213
+ resolved "https://registry.yarnpkg.com/hermes-eslint/-/hermes-eslint-0.32.0.tgz#a23bcaece522f356cb1b8e990e57117dca13852d"
10214
+ integrity sha512-f/gnFD3Nl7QNrclG6otkHnHsUbwYrJGO76AMtoDeIYs2+i7fFgqJgSg7DKwejTtAKBoXQg51hAQuo9cgcp1R1w==
10215
dependencies:
10216
esrecurse "^4.3.0"
10217
- hermes-estree "0.25.1"
10218
- hermes-parser "0.25.1"
10217
+ hermes-estree "0.32.0"
10218
+ hermes-parser "0.32.0"
10219
10220
hermes-estree@0.25.1:
10221
version "0.25.1"
@@ -10232,13 +10232,6 @@ hermes-estree@0.32.0:
10232
resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.32.0.tgz#bb7da6613ab8e67e334a1854ea1e209f487d307b"
10233
integrity sha512-KWn3BqnlDOl97Xe1Yviur6NbgIZ+IP+UVSpshlZWkq+EtoHg6/cwiDj/osP9PCEgFE15KBm1O55JRwbMEm5ejQ==
10234
10235
-hermes-parser@0.25.1, hermes-parser@^0.25.1:
10236
- version "0.25.1"
10237
- resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.25.1.tgz#5be0e487b2090886c62bd8a11724cd766d5f54d1"
10238
- integrity sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==
10239
- dependencies:
10240
- hermes-estree "0.25.1"
10241
-
10235
hermes-parser@0.29.1:
10236
version "0.29.1"
10237
resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.29.1.tgz#436b24bcd7bb1e71f92a04c396ccc0716c288d56"
@@ -10246,13 +10239,20 @@ hermes-parser@0.29.1:
10239
dependencies:
10240
hermes-estree "0.29.1"
10241
10249
-hermes-parser@0.32.0:
10242
+hermes-parser@0.32.0, hermes-parser@^0.32.0:
10243
version "0.32.0"
10244
resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.32.0.tgz#7916984ef6fdce62e7415d354cf35392061cd303"
10245
integrity sha512-g4nBOWFpuiTqjR3LZdRxKUkij9iyveWeuks7INEsMX741f3r9xxrOe8TeQfUxtda0eXmiIFiMQzoeSQEno33Hw==
10246
dependencies:
10247
hermes-estree "0.32.0"
10248
10249
+hermes-parser@^0.25.1:
10250
+ version "0.25.1"
10251
+ resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.25.1.tgz#5be0e487b2090886c62bd8a11724cd766d5f54d1"
10252
+ integrity sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==
10253
+ dependencies:
10254
+ hermes-estree "0.25.1"
10255
+
10256
homedir-polyfill@^1.0.0, homedir-polyfill@^1.0.1:
10257
version "1.0.3"
10258
resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8"