@samitouri / QOS-React / commits / df10309e2b

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"