/
githubmr
/
facebook-react
Обзор
Документация
Войти
/
githubmr
/
facebook-react
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
main
packages/react-devtools-shared/src/hooks/parseHookNames/index.js
62 строки
2 KB
Sebastian Markbåge
[DevTools] Use use() instead of throwing a Promise in Caches (#34033)
29 июл 2025, 10:45
Не верифицирован
29 июл 2025, 10:45
5d7e8b9
Код
Авторство
О чём код?
/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @flow */ import type {HookSourceAndMetadata} from './loadSourceAndMetadata'; import type {HooksNode, HooksTree} from 'react-debug-tools/src/ReactDebugHooks'; import type {HookNames} from 'react-devtools-shared/src/frontend/types'; import type {FetchFileWithCaching} from 'react-devtools-shared/src/devtools/views/Components/FetchFileWithCachingContext'; import 'react'; import {withAsyncPerfMeasurements} from 'react-devtools-shared/src/PerformanceLoggingUtils'; import WorkerizedParseSourceAndMetadata from './parseSourceAndMetadata.worker'; import typeof * as ParseSourceAndMetadataModule from './parseSourceAndMetadata'; import {flattenHooksList, loadSourceAndMetadata} from './loadSourceAndMetadata'; const workerizedParseHookNames: ParseSourceAndMetadataModule = WorkerizedParseSourceAndMetadata(); export function parseSourceAndMetadata( hooksList: Array<HooksNode>, locationKeyToHookSourceAndMetadata: Map<string, HookSourceAndMetadata>, ): Promise<HookNames | null> { return workerizedParseHookNames.parseSourceAndMetadata( hooksList, locationKeyToHookSourceAndMetadata, ); } export const purgeCachedMetadata = workerizedParseHookNames.purgeCachedMetadata; const EMPTY_MAP: HookNames = new Map(); export async function parseHookNames( hooksTree: HooksTree, fetchFileWithCaching: FetchFileWithCaching | null, ): Promise<HookNames | null> { return withAsyncPerfMeasurements('parseHookNames', async () => { const hooksList = flattenHooksList(hooksTree); if (hooksList.length === 0) { // This component tree contains no named hooks. return EMPTY_MAP; } // Runs on the main/UI thread so it can reuse Network cache: const locationKeyToHookSourceAndMetadata = await loadSourceAndMetadata( hooksList, fetchFileWithCaching, ); // Runs in a Worker because it's CPU intensive: return parseSourceAndMetadata( hooksList, locationKeyToHookSourceAndMetadata, ); }); }