diff --git a/compiler/apps/playground/__tests__/e2e/page.spec.ts b/compiler/apps/playground/__tests__/e2e/page.spec.ts index 296f45a27762b..17505024ffeac 100644 --- a/compiler/apps/playground/__tests__/e2e/page.spec.ts +++ b/compiler/apps/playground/__tests__/e2e/page.spec.ts @@ -136,7 +136,7 @@ test('editor should compile from hash successfully', async ({page}) => { path: 'test-results/01-compiles-from-hash.png', }); const text = - (await page.locator('.monaco-editor').nth(1).allInnerTexts()) ?? []; + (await page.locator('.monaco-editor').nth(3).allInnerTexts()) ?? []; const output = await formatPrint(text); expect(output).not.toEqual(''); @@ -162,7 +162,7 @@ test('reset button works', async ({page}) => { path: 'test-results/02-reset-button-works.png', }); const text = - (await page.locator('.monaco-editor').nth(1).allInnerTexts()) ?? []; + (await page.locator('.monaco-editor').nth(3).allInnerTexts()) ?? []; const output = await formatPrint(text); expect(output).not.toEqual(''); @@ -183,7 +183,7 @@ TEST_CASE_INPUTS.forEach((t, idx) => }); const text = - (await page.locator('.monaco-editor').nth(1).allInnerTexts()) ?? []; + (await page.locator('.monaco-editor').nth(3).allInnerTexts()) ?? []; let output: string; if (t.noFormat) { output = text.join(''); diff --git a/compiler/apps/playground/app/index.tsx b/compiler/apps/playground/app/index.tsx deleted file mode 100644 index 3bbf2e9b5558c..0000000000000 --- a/compiler/apps/playground/app/index.tsx +++ /dev/null @@ -1,56 +0,0 @@ -/** - * 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. - */ - -import type {NextPage} from 'next'; -import Head from 'next/head'; -import {SnackbarProvider} from 'notistack'; -import {Editor, Header, StoreProvider} from '../components'; -import MessageSnackbar from '../components/Message'; - -const Home: NextPage = () => { - return ( -
- - - {process.env.NODE_ENV === 'development' - ? '[DEV] React Compiler Playground' - : 'React Compiler Playground'} - - - - - - - - - -
- - - -
- ); -}; - -export default Home; diff --git a/compiler/apps/playground/components/AccordionWindow.tsx b/compiler/apps/playground/components/AccordionWindow.tsx index de3b01b0b05d3..bebbb0c4787a5 100644 --- a/compiler/apps/playground/components/AccordionWindow.tsx +++ b/compiler/apps/playground/components/AccordionWindow.tsx @@ -17,15 +17,6 @@ export default function AccordionWindow(props: { setTabsOpen: (newTab: Set) => void; changedPasses: Set; }): React.ReactElement { - if (props.tabs.size === 0) { - return ( -
- No compiler output detected, see errors below -
- ); - } return (
{Array.from(props.tabs.keys()).map(name => { diff --git a/compiler/apps/playground/components/Editor/ConfigEditor.tsx b/compiler/apps/playground/components/Editor/ConfigEditor.tsx index 162d82591cb00..add42018a3879 100644 --- a/compiler/apps/playground/components/Editor/ConfigEditor.tsx +++ b/compiler/apps/playground/components/Editor/ConfigEditor.tsx @@ -9,7 +9,7 @@ import MonacoEditor, {loader, type Monaco} from '@monaco-editor/react'; import {PluginOptions} from 'babel-plugin-react-compiler'; import type {editor} from 'monaco-editor'; import * as monaco from 'monaco-editor'; -import React, {useState} from 'react'; +import React, {useState, useRef, useEffect} from 'react'; import {Resizable} from 're-resizable'; import {useStore, useStoreDispatch} from '../StoreContext'; import {monacoOptions} from './monacoOptions'; @@ -28,10 +28,25 @@ export default function ConfigEditor({ }): React.ReactElement { const [isExpanded, setIsExpanded] = useState(false); - return isExpanded ? ( - - ) : ( - + return ( + // TODO: Use when it is compatible with Monaco: https://github.com/suren-atoyan/monaco-react/issues/753 + <> +
+ +
+
+ +
+ ); } @@ -44,16 +59,25 @@ function ExpandedEditor({ }): React.ReactElement { const store = useStore(); const dispatchStore = useStoreDispatch(); + const debounceTimerRef = useRef(null); - const handleChange: (value: string | undefined) => void = value => { + const handleChange: (value: string | undefined) => void = ( + value: string | undefined, + ) => { if (value === undefined) return; - dispatchStore({ - type: 'updateConfig', - payload: { - config: value, - }, - }); + if (debounceTimerRef.current) { + clearTimeout(debounceTimerRef.current); + } + + debounceTimerRef.current = setTimeout(() => { + dispatchStore({ + type: 'updateConfig', + payload: { + config: value, + }, + }); + }, 500); // 500ms debounce delay }; const handleMount: ( @@ -77,12 +101,6 @@ function ExpandedEditor({ allowSyntheticDefaultImports: true, jsx: monaco.languages.typescript.JsxEmit.React, }); - - const uri = monaco.Uri.parse(`file:///config.ts`); - const model = monaco.editor.getModel(uri); - if (model) { - model.updateOptions({tabSize: 2}); - } }; const formattedAppliedOptions = appliedOptions @@ -126,6 +144,7 @@ function ExpandedEditor({ value={store.config} onMount={handleMount} onChange={handleChange} + loading={''} options={{ ...monacoOptions, lineNumbers: 'off', @@ -139,7 +158,6 @@ function ExpandedEditor({ />
-

@@ -151,6 +169,7 @@ function ExpandedEditor({ path={'applied-config.js'} language={'javascript'} value={formattedAppliedOptions} + loading={''} options={{ ...monacoOptions, lineNumbers: 'off', diff --git a/compiler/apps/playground/components/Editor/EditorImpl.tsx b/compiler/apps/playground/components/Editor/EditorImpl.tsx index 8b75ce6ac5eb5..696bbd2559c11 100644 --- a/compiler/apps/playground/components/Editor/EditorImpl.tsx +++ b/compiler/apps/playground/components/Editor/EditorImpl.tsx @@ -24,19 +24,8 @@ import BabelPluginReactCompiler, { printFunctionWithOutlined, type LoggerEvent, } from 'babel-plugin-react-compiler'; -import invariant from 'invariant'; -import {useSnackbar} from 'notistack'; import {useDeferredValue, useMemo} from 'react'; -import {useMountEffect} from '../../hooks'; -import {defaultStore} from '../../lib/defaultStore'; -import { - createMessage, - initStoreFromUrlOrLocalStorage, - MessageLevel, - MessageSource, - type Store, -} from '../../lib/stores'; -import {useStore, useStoreDispatch} from '../StoreContext'; +import {useStore} from '../StoreContext'; import ConfigEditor from './ConfigEditor'; import Input from './Input'; import { @@ -174,7 +163,6 @@ function parseOptions( // Parse config overrides from config editor let configOverrideOptions: any = {}; const configMatch = configOverrides.match(/^\s*import.*?\n\n\((.*)\)/s); - // TODO: initialize store with URL params, not empty store if (configOverrides.trim()) { if (configMatch && configMatch[1]) { const configString = configMatch[1].replace(/satisfies.*$/, '').trim(); @@ -327,8 +315,6 @@ function compile( export default function Editor(): JSX.Element { const store = useStore(); const deferredStore = useDeferredValue(store); - const dispatchStore = useStoreDispatch(); - const {enqueueSnackbar} = useSnackbar(); const [compilerOutput, language, appliedOptions] = useMemo( () => compile(deferredStore.source, 'compiler', deferredStore.config), [deferredStore.source, deferredStore.config], @@ -338,32 +324,6 @@ export default function Editor(): JSX.Element { [deferredStore.source, deferredStore.config], ); - useMountEffect(() => { - // Initialize store - let mountStore: Store; - try { - mountStore = initStoreFromUrlOrLocalStorage(); - } catch (e) { - invariant(e instanceof Error, 'Only Error may be caught.'); - enqueueSnackbar(e.message, { - variant: 'warning', - ...createMessage( - 'Bad URL - fell back to the default Playground.', - MessageLevel.Info, - MessageSource.Playground, - ), - }); - mountStore = defaultStore; - } - - dispatchStore({ - type: 'setStore', - payload: { - store: mountStore, - }, - }); - }); - let mergedOutput: CompilerOutput; let errors: Array; if (compilerOutput.kind === 'ok') { diff --git a/compiler/apps/playground/components/Editor/Input.tsx b/compiler/apps/playground/components/Editor/Input.tsx index 206b98300be43..d8744c3ca9770 100644 --- a/compiler/apps/playground/components/Editor/Input.tsx +++ b/compiler/apps/playground/components/Editor/Input.tsx @@ -13,7 +13,6 @@ import { import invariant from 'invariant'; import type {editor} from 'monaco-editor'; import * as monaco from 'monaco-editor'; -import {Resizable} from 're-resizable'; import {useEffect, useState} from 'react'; import {renderReactCompilerMarkers} from '../../lib/reactCompilerMonacoDiagnostics'; import {useStore, useStoreDispatch} from '../StoreContext'; @@ -46,11 +45,6 @@ export default function Input({errors, language}: Props): JSX.Element { details: errors, source: store.source, }); - /** - * N.B. that `tabSize` is a model property, not an editor property. - * So, the tab size has to be set per model. - */ - model.updateOptions({tabSize: 2}); }, [monaco, errors, store.source]); useEffect(() => { @@ -152,38 +146,24 @@ export default function Input({errors, language}: Props): JSX.Element { onMount={handleMount} onChange={handleChange} options={monacoOptions} + loading={''} /> ); const tabs = new Map([['Input', editorContent]]); const [activeTab, setActiveTab] = useState('Input'); - const tabbedContent = ( -
- -
- ); - return (
- {store.showInternals ? ( - - {tabbedContent} - - ) : ( -
{tabbedContent}
- )} +
+
+ +
+
); } diff --git a/compiler/apps/playground/components/Editor/Output.tsx b/compiler/apps/playground/components/Editor/Output.tsx index 22f908e51bbdb..bf73c192c1152 100644 --- a/compiler/apps/playground/components/Editor/Output.tsx +++ b/compiler/apps/playground/components/Editor/Output.tsx @@ -324,6 +324,7 @@ function TextTabContent({ = { automaticLayout: true, wordWrap: 'on', wrappingIndent: 'same', + + tabSize: 2, }; diff --git a/compiler/apps/playground/components/StoreContext.tsx b/compiler/apps/playground/components/StoreContext.tsx index 52de6c0fa3e4c..3f55678edf15d 100644 --- a/compiler/apps/playground/components/StoreContext.tsx +++ b/compiler/apps/playground/components/StoreContext.tsx @@ -6,10 +6,14 @@ */ import type {Dispatch, ReactNode} from 'react'; -import {useEffect, useReducer} from 'react'; +import {useState, useEffect, useReducer} from 'react'; import createContext from '../lib/createContext'; -import {emptyStore} from '../lib/defaultStore'; -import {saveStore, type Store} from '../lib/stores'; +import {emptyStore, defaultStore} from '../lib/defaultStore'; +import { + saveStore, + initStoreFromUrlOrLocalStorage, + type Store, +} from '../lib/stores'; const StoreContext = createContext(); @@ -30,6 +34,20 @@ export const useStoreDispatch = StoreDispatchContext.useContext; */ export function StoreProvider({children}: {children: ReactNode}): JSX.Element { const [store, dispatch] = useReducer(storeReducer, emptyStore); + const [isPageReady, setIsPageReady] = useState(false); + + useEffect(() => { + let mountStore: Store; + try { + mountStore = initStoreFromUrlOrLocalStorage(); + } catch (e) { + console.error('Failed to initialize store from URL or local storage', e); + mountStore = defaultStore; + } + dispatch({type: 'setStore', payload: {store: mountStore}}); + setIsPageReady(true); + }, []); + useEffect(() => { if (store !== emptyStore) { saveStore(store); @@ -39,7 +57,7 @@ export function StoreProvider({children}: {children: ReactNode}): JSX.Element { return ( - {children} + {isPageReady ? children : null} ); diff --git a/compiler/apps/playground/components/TabbedWindow.tsx b/compiler/apps/playground/components/TabbedWindow.tsx index 1751bd87e26c2..d2335687c2206 100644 --- a/compiler/apps/playground/components/TabbedWindow.tsx +++ b/compiler/apps/playground/components/TabbedWindow.tsx @@ -16,13 +16,6 @@ export default function TabbedWindow({ activeTab: string; onTabChange: (tab: string) => void; }): React.ReactElement { - if (tabs.size === 0) { - return ( -
- No compiler output detected, see errors below -
- ); - } return (
diff --git a/compiler/apps/playground/lib/stores/store.ts b/compiler/apps/playground/lib/stores/store.ts index e67578c79bf17..6655efa274089 100644 --- a/compiler/apps/playground/lib/stores/store.ts +++ b/compiler/apps/playground/lib/stores/store.ts @@ -71,7 +71,7 @@ export function initStoreFromUrlOrLocalStorage(): Store { // Make sure all properties are populated return { source: raw.source, - config: 'config' in raw ? raw.config : defaultConfig, + config: 'config' in raw && raw['config'] ? raw.config : defaultConfig, showInternals: 'showInternals' in raw ? raw.showInternals : false, }; } diff --git a/compiler/apps/playground/next-env.d.ts b/compiler/apps/playground/next-env.d.ts index 830fb594ca297..9edff1c7cacb3 100644 --- a/compiler/apps/playground/next-env.d.ts +++ b/compiler/apps/playground/next-env.d.ts @@ -1,6 +1,6 @@ /// /// -/// +import "./.next/types/routes.d.ts"; // NOTE: This file should not be edited // see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/compiler/apps/playground/package.json b/compiler/apps/playground/package.json index 44c1f101230cd..08aed45e0f33c 100644 --- a/compiler/apps/playground/package.json +++ b/compiler/apps/playground/package.json @@ -34,7 +34,7 @@ "invariant": "^2.2.4", "lz-string": "^1.5.0", "monaco-editor": "^0.52.0", - "next": "15.5.2", + "next": "15.6.0-canary.7", "notistack": "^3.0.0-alpha.7", "prettier": "^3.3.3", "pretty-format": "^29.3.1", @@ -44,7 +44,7 @@ }, "devDependencies": { "@types/node": "18.11.9", - "@types/react": "19.1.12", + "@types/react": "19.1.13", "@types/react-dom": "19.1.9", "autoprefixer": "^10.4.13", "clsx": "^1.2.1", diff --git a/compiler/apps/playground/tsconfig.json b/compiler/apps/playground/tsconfig.json index eb7fcfe2b7228..4f70dcef8abb6 100644 --- a/compiler/apps/playground/tsconfig.json +++ b/compiler/apps/playground/tsconfig.json @@ -6,6 +6,9 @@ "dom.iterable", "esnext" ], + "types": [ + "react/experimental" + ], "allowJs": true, "skipLibCheck": true, "strict": true, @@ -16,7 +19,7 @@ "moduleResolution": "node", "resolveJsonModule": true, "isolatedModules": true, - "jsx": "preserve", + "jsx": "react-jsx", "incremental": true, "plugins": [ { diff --git a/compiler/apps/playground/yarn.lock b/compiler/apps/playground/yarn.lock index 9bf1bb0687baf..53f0d24db706f 100644 --- a/compiler/apps/playground/yarn.lock +++ b/compiler/apps/playground/yarn.lock @@ -715,10 +715,10 @@ dependencies: "@monaco-editor/loader" "^1.4.0" -"@next/env@15.5.2": - version "15.5.2" - resolved "https://registry.yarnpkg.com/@next/env/-/env-15.5.2.tgz#0c6b959313cd6e71afb69bf0deb417237f1d2f8a" - integrity sha512-Qe06ew4zt12LeO6N7j8/nULSOe3fMXE4dM6xgpBQNvdzyK1sv5y4oAP3bq4LamrvGCZtmRYnW8URFCeX5nFgGg== +"@next/env@15.6.0-canary.7": + version "15.6.0-canary.7" + resolved "https://registry.yarnpkg.com/@next/env/-/env-15.6.0-canary.7.tgz#cdbf2967a9437ef09eef755e203f315acc4d8d8f" + integrity sha512-LNZ7Yd3Cl9rKvjYdeJmszf2HmSDP76SQmfafKep2Ux16ZXKoN5OjwVHFTltKNdsB3vt2t+XJzLP2rhw5lBoFBA== "@next/eslint-plugin-next@15.5.2": version "15.5.2" @@ -727,45 +727,45 @@ dependencies: fast-glob "3.3.1" -"@next/swc-darwin-arm64@15.5.2": - version "15.5.2" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.5.2.tgz#f69713326fc08f2eff3726fe19165cdb429d67c7" - integrity sha512-8bGt577BXGSd4iqFygmzIfTYizHb0LGWqH+qgIF/2EDxS5JsSdERJKA8WgwDyNBZgTIIA4D8qUtoQHmxIIquoQ== - -"@next/swc-darwin-x64@15.5.2": - version "15.5.2" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-15.5.2.tgz#560a9da4126bae75cbbd6899646ad7a2e4fdcc9b" - integrity sha512-2DjnmR6JHK4X+dgTXt5/sOCu/7yPtqpYt8s8hLkHFK3MGkka2snTv3yRMdHvuRtJVkPwCGsvBSwmoQCHatauFQ== - -"@next/swc-linux-arm64-gnu@15.5.2": - version "15.5.2" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.5.2.tgz#80b2be276e775e5a9286369ae54e536b0cdf8c3a" - integrity sha512-3j7SWDBS2Wov/L9q0mFJtEvQ5miIqfO4l7d2m9Mo06ddsgUK8gWfHGgbjdFlCp2Ek7MmMQZSxpGFqcC8zGh2AA== - -"@next/swc-linux-arm64-musl@15.5.2": - version "15.5.2" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.5.2.tgz#68cf676301755fd99aca11a7ebdb5eae88d7c2e4" - integrity sha512-s6N8k8dF9YGc5T01UPQ08yxsK6fUow5gG1/axWc1HVVBYQBgOjca4oUZF7s4p+kwhkB1bDSGR8QznWrFZ/Rt5g== - -"@next/swc-linux-x64-gnu@15.5.2": - version "15.5.2" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.5.2.tgz#209d9a79d0f2333544f863b0daca3f7e29f2eaff" - integrity sha512-o1RV/KOODQh6dM6ZRJGZbc+MOAHww33Vbs5JC9Mp1gDk8cpEO+cYC/l7rweiEalkSm5/1WGa4zY7xrNwObN4+Q== - -"@next/swc-linux-x64-musl@15.5.2": - version "15.5.2" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.5.2.tgz#d4ad1cfb5e99e51db669fe2145710c1abeadbd7f" - integrity sha512-/VUnh7w8RElYZ0IV83nUcP/J4KJ6LLYliiBIri3p3aW2giF+PAVgZb6mk8jbQSB3WlTai8gEmCAr7kptFa1H6g== - -"@next/swc-win32-arm64-msvc@15.5.2": - version "15.5.2" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.5.2.tgz#070e10e370a5447a198c2db100389646aca2c496" - integrity sha512-sMPyTvRcNKXseNQ/7qRfVRLa0VhR0esmQ29DD6pqvG71+JdVnESJaHPA8t7bc67KD5spP3+DOCNLhqlEI2ZgQg== - -"@next/swc-win32-x64-msvc@15.5.2": - version "15.5.2" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.5.2.tgz#9237d40b82eaf2efc88baeba15b784d4126caf4a" - integrity sha512-W5VvyZHnxG/2ukhZF/9Ikdra5fdNftxI6ybeVKYvBPDtyx7x4jPPSNduUkfH5fo3zG0JQ0bPxgy41af2JX5D4Q== +"@next/swc-darwin-arm64@15.6.0-canary.7": + version "15.6.0-canary.7" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.6.0-canary.7.tgz#628cd34ce9120000f1cb5b08963426431174fc57" + integrity sha512-POsBrxhrR3qvqXV+JZ6ZoBc8gJf8rhYe+OedceI1piPVqtJYOJa3EB4eaqcc+kMsllKRrH/goNlhLwtyhE+0Qg== + +"@next/swc-darwin-x64@15.6.0-canary.7": + version "15.6.0-canary.7" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-15.6.0-canary.7.tgz#37d4ebab14da74a2f8028daf6d76aab410153e06" + integrity sha512-lmk9ysBuSiPlAJZTCo/3O4mXNFosg6EDIf4GrmynIwCG2as6/KxzyD1WqFp56Exp8eFDjP7SFapD10sV43vCsA== + +"@next/swc-linux-arm64-gnu@15.6.0-canary.7": + version "15.6.0-canary.7" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.6.0-canary.7.tgz#ce700cc0e0d24763136838223105a524b36694fa" + integrity sha512-why8k6d0SBm3AKoOD5S7ir3g+BF34l9oFKIoZrLaZaKBvNGpFcjc7Ovc2TunNMeaMJzv9k1dHYSap0EI5oSuzg== + +"@next/swc-linux-arm64-musl@15.6.0-canary.7": + version "15.6.0-canary.7" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.6.0-canary.7.tgz#c791b8e15bf2c338b4cc0387fe7afb3ef83ecfcf" + integrity sha512-HzvTRsKvYj32Va4YuJN3n3xOxvk+6QwB63d/EsgmdkeA/vrqciUAmJDYpuzZEvRc3Yp2nyPq8KZxtHAr6ISZ2Q== + +"@next/swc-linux-x64-gnu@15.6.0-canary.7": + version "15.6.0-canary.7" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.6.0-canary.7.tgz#c01c3a3d8e71660c49298dd053d078379b6b5919" + integrity sha512-6yRFrg2qWXOqa+1BI53J9EmHWFzKg9U2r+5R7n7BFUp8PH5SC92WBsmYTnh/RkvAYvdupiVzMervwwswCs6kFg== + +"@next/swc-linux-x64-musl@15.6.0-canary.7": + version "15.6.0-canary.7" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.6.0-canary.7.tgz#3f4b39faef4a5f88b13e4c726b008ddc9717f819" + integrity sha512-O/JjvOvNK/Wao/OIQaA6evDkxkmFFQgJ1/hI1dVk6/PAeKmW2/Q+6Dodh97eAkOwedS1ZdQl2mojf87TzLvzdQ== + +"@next/swc-win32-arm64-msvc@15.6.0-canary.7": + version "15.6.0-canary.7" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.6.0-canary.7.tgz#9bc5da0907b7ce67eedda02a6d56a09d9a539ccf" + integrity sha512-p9DvrDgnePofZCtiWVY7qZtwXxiOGJlAyy2LoGPYSGOUDhjbTG8j6XMUFXpV9UwpH+l7st522psO1BVzbpT8IQ== + +"@next/swc-win32-x64-msvc@15.6.0-canary.7": + version "15.6.0-canary.7" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.6.0-canary.7.tgz#5b271c591ccbe67d5fa966dd22db86c547414fd1" + integrity sha512-f1ywT3xWu4StWKA1mZRyGfelu/h+W0OEEyBxQNXzXyYa0VGZb9LyCNb5cYoNKBm0Bw18Hp1PVe0bHuusemGCcw== "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -866,6 +866,13 @@ dependencies: csstype "^3.0.2" +"@types/react@19.1.13": + version "19.1.13" + resolved "https://registry.yarnpkg.com/@types/react/-/react-19.1.13.tgz#fc650ffa680d739a25a530f5d7ebe00cdd771883" + integrity sha512-hHkbU/eoO3EG5/MZkuFSKmYqPbSVk5byPFa3e7y/8TybHiLMACgI8seVYlicwk7H5K/rI2px9xrQp/C+AUDTiQ== + dependencies: + csstype "^3.0.2" + "@typescript-eslint/eslint-plugin@^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0": version "8.10.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.10.0.tgz#9c8218ed62f9a322df10ded7c34990f014df44f2" @@ -3199,25 +3206,25 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -next@15.5.2: - version "15.5.2" - resolved "https://registry.yarnpkg.com/next/-/next-15.5.2.tgz#5e50102443fb0328a9dfcac2d82465c7bac93693" - integrity sha512-H8Otr7abj1glFhbGnvUt3gz++0AF1+QoCXEBmd/6aKbfdFwrn0LpA836Ed5+00va/7HQSDD+mOoVhn3tNy3e/Q== +next@15.6.0-canary.7: + version "15.6.0-canary.7" + resolved "https://registry.yarnpkg.com/next/-/next-15.6.0-canary.7.tgz#bfc2ac3c9a78e23d550c303d18247a263e6b5bc1" + integrity sha512-4ukX2mxat9wWT6E0Gw/3TOR9ULV1q399E42F86cwsPSFgTWa04ABhcTqO0r9J/QR1YWPR8WEgh9qUzmWA/1yEw== dependencies: - "@next/env" "15.5.2" + "@next/env" "15.6.0-canary.7" "@swc/helpers" "0.5.15" caniuse-lite "^1.0.30001579" postcss "8.4.31" styled-jsx "5.1.6" optionalDependencies: - "@next/swc-darwin-arm64" "15.5.2" - "@next/swc-darwin-x64" "15.5.2" - "@next/swc-linux-arm64-gnu" "15.5.2" - "@next/swc-linux-arm64-musl" "15.5.2" - "@next/swc-linux-x64-gnu" "15.5.2" - "@next/swc-linux-x64-musl" "15.5.2" - "@next/swc-win32-arm64-msvc" "15.5.2" - "@next/swc-win32-x64-msvc" "15.5.2" + "@next/swc-darwin-arm64" "15.6.0-canary.7" + "@next/swc-darwin-x64" "15.6.0-canary.7" + "@next/swc-linux-arm64-gnu" "15.6.0-canary.7" + "@next/swc-linux-arm64-musl" "15.6.0-canary.7" + "@next/swc-linux-x64-gnu" "15.6.0-canary.7" + "@next/swc-linux-x64-musl" "15.6.0-canary.7" + "@next/swc-win32-arm64-msvc" "15.6.0-canary.7" + "@next/swc-win32-x64-msvc" "15.6.0-canary.7" sharp "^0.34.3" node-releases@^2.0.18: diff --git a/packages/internal-test-utils/ReactInternalTestUtils.js b/packages/internal-test-utils/ReactInternalTestUtils.js index 317a07262c5ad..ed9b822457a2b 100644 --- a/packages/internal-test-utils/ReactInternalTestUtils.js +++ b/packages/internal-test-utils/ReactInternalTestUtils.js @@ -16,6 +16,7 @@ import { clearErrors, createLogAssertion, } from './consoleMock'; +export {getDebugInfo} from './debugInfo'; export {act, serverAct} from './internalAct'; const {assertConsoleLogsCleared} = require('internal-test-utils/consoleMock'); diff --git a/packages/internal-test-utils/debugInfo.js b/packages/internal-test-utils/debugInfo.js new file mode 100644 index 0000000000000..7b9c730ba6537 --- /dev/null +++ b/packages/internal-test-utils/debugInfo.js @@ -0,0 +1,131 @@ +'use strict'; + +const path = require('path'); + +const repoRoot = path.resolve(__dirname, '../../'); + +type DebugInfoConfig = { + ignoreProps?: boolean, + ignoreRscStreamInfo?: boolean, + useFixedTime?: boolean, + useV8Stack?: boolean, +}; + +function formatV8Stack(stack) { + let v8StyleStack = ''; + if (stack) { + for (let i = 0; i < stack.length; i++) { + const [name] = stack[i]; + if (v8StyleStack !== '') { + v8StyleStack += '\n'; + } + v8StyleStack += ' in ' + name + ' (at **)'; + } + } + return v8StyleStack; +} + +function normalizeStack(stack) { + if (!stack) { + return stack; + } + const copy = []; + for (let i = 0; i < stack.length; i++) { + const [name, file, line, col, enclosingLine, enclosingCol] = stack[i]; + copy.push([ + name, + file.replace(repoRoot, ''), + line, + col, + enclosingLine, + enclosingCol, + ]); + } + return copy; +} + +function normalizeIOInfo(config: DebugInfoConfig, ioInfo) { + const {debugTask, debugStack, debugLocation, ...copy} = ioInfo; + if (ioInfo.stack) { + copy.stack = config.useV8Stack + ? formatV8Stack(ioInfo.stack) + : normalizeStack(ioInfo.stack); + } + if (ioInfo.owner) { + copy.owner = normalizeDebugInfo(config, ioInfo.owner); + } + if (typeof ioInfo.start === 'number' && config.useFixedTime) { + copy.start = 0; + } + if (typeof ioInfo.end === 'number' && config.useFixedTime) { + copy.end = 0; + } + const promise = ioInfo.value; + if (promise) { + promise.then(); // init + if (promise.status === 'fulfilled') { + if (ioInfo.name === 'RSC stream') { + copy.byteSize = 0; + copy.value = { + value: 'stream', + }; + } else { + copy.value = { + value: promise.value, + }; + } + } else if (promise.status === 'rejected') { + copy.value = { + reason: promise.reason, + }; + } else { + copy.value = { + status: promise.status, + }; + } + } + return copy; +} + +function normalizeDebugInfo(config: DebugInfoConfig, original) { + const {debugTask, debugStack, debugLocation, ...debugInfo} = original; + if (original.owner) { + debugInfo.owner = normalizeDebugInfo(config, original.owner); + } + if (original.awaited) { + debugInfo.awaited = normalizeIOInfo(config, original.awaited); + } + if (debugInfo.props && config.ignoreProps) { + debugInfo.props = {}; + } + if (Array.isArray(debugInfo.stack)) { + debugInfo.stack = config.useV8Stack + ? formatV8Stack(debugInfo.stack) + : normalizeStack(debugInfo.stack); + return debugInfo; + } else if (typeof debugInfo.time === 'number' && config.useFixedTime) { + return {...debugInfo, time: 0}; + } else { + return debugInfo; + } +} + +export function getDebugInfo(config: DebugInfoConfig, obj) { + const debugInfo = obj._debugInfo; + if (debugInfo) { + const copy = []; + for (let i = 0; i < debugInfo.length; i++) { + if ( + debugInfo[i].awaited && + debugInfo[i].awaited.name === 'RSC stream' && + config.ignoreRscStreamInfo + ) { + // Ignore RSC stream I/O info. + } else { + copy.push(normalizeDebugInfo(config, debugInfo[i])); + } + } + return copy; + } + return debugInfo; +} diff --git a/packages/react-client/src/__tests__/ReactFlight-test.js b/packages/react-client/src/__tests__/ReactFlight-test.js index da1dff04820fc..0baee5a1f5098 100644 --- a/packages/react-client/src/__tests__/ReactFlight-test.js +++ b/packages/react-client/src/__tests__/ReactFlight-test.js @@ -33,20 +33,6 @@ function normalizeCodeLocInfo(str) { ); } -function formatV8Stack(stack) { - let v8StyleStack = ''; - if (stack) { - for (let i = 0; i < stack.length; i++) { - const [name] = stack[i]; - if (v8StyleStack !== '') { - v8StyleStack += '\n'; - } - v8StyleStack += ' in ' + name + ' (at **)'; - } - } - return v8StyleStack; -} - const repoRoot = path.resolve(__dirname, '../../../../'); function normalizeReactCodeLocInfo(str) { const repoRootForRegexp = repoRoot.replace(/\//g, '\\/'); @@ -67,35 +53,6 @@ function getErrorForJestMatcher(error) { }; } -function normalizeComponentInfo(debugInfo) { - if (Array.isArray(debugInfo.stack)) { - const {debugTask, debugStack, debugLocation, ...copy} = debugInfo; - copy.stack = formatV8Stack(debugInfo.stack); - if (debugInfo.owner) { - copy.owner = normalizeComponentInfo(debugInfo.owner); - } - return copy; - } else { - return debugInfo; - } -} - -function getDebugInfo(obj) { - const debugInfo = obj._debugInfo; - if (debugInfo) { - const copy = []; - for (let i = 0; i < debugInfo.length; i++) { - if (debugInfo[i].awaited && debugInfo[i].awaited.name === 'RSC stream') { - // Ignore RSC stream I/O info. - } else { - copy.push(normalizeComponentInfo(debugInfo[i])); - } - } - return copy; - } - return debugInfo; -} - const finalizationRegistries = []; function FinalizationRegistryMock(callback) { this._heldValues = []; @@ -132,6 +89,7 @@ let NoErrorExpected; let Scheduler; let assertLog; let assertConsoleErrorDev; +let getDebugInfo; describe('ReactFlight', () => { beforeEach(() => { @@ -169,6 +127,11 @@ describe('ReactFlight', () => { assertLog = InternalTestUtils.assertLog; assertConsoleErrorDev = InternalTestUtils.assertConsoleErrorDev; + getDebugInfo = InternalTestUtils.getDebugInfo.bind(null, { + useV8Stack: true, + ignoreRscStreamInfo: true, + }); + ErrorBoundary = class extends React.Component { state = {hasError: false, error: null}; static getDerivedStateFromError(error) { diff --git a/packages/react-client/src/__tests__/ReactFlightDebugChannel-test.js b/packages/react-client/src/__tests__/ReactFlightDebugChannel-test.js index e9428c3ba4074..6d69169261477 100644 --- a/packages/react-client/src/__tests__/ReactFlightDebugChannel-test.js +++ b/packages/react-client/src/__tests__/ReactFlightDebugChannel-test.js @@ -18,50 +18,12 @@ if (typeof File === 'undefined' || typeof FormData === 'undefined') { global.FormData = require('undici').FormData; } -function formatV8Stack(stack) { - let v8StyleStack = ''; - if (stack) { - for (let i = 0; i < stack.length; i++) { - const [name] = stack[i]; - if (v8StyleStack !== '') { - v8StyleStack += '\n'; - } - v8StyleStack += ' in ' + name + ' (at **)'; - } - } - return v8StyleStack; -} - -function normalizeComponentInfo(debugInfo) { - if (Array.isArray(debugInfo.stack)) { - const {debugTask, debugStack, ...copy} = debugInfo; - copy.stack = formatV8Stack(debugInfo.stack); - if (debugInfo.owner) { - copy.owner = normalizeComponentInfo(debugInfo.owner); - } - return copy; - } else { - return debugInfo; - } -} - -function getDebugInfo(obj) { - const debugInfo = obj._debugInfo; - if (debugInfo) { - const copy = []; - for (let i = 0; i < debugInfo.length; i++) { - copy.push(normalizeComponentInfo(debugInfo[i])); - } - return copy; - } - return debugInfo; -} - let act; let React; let ReactNoop; let ReactNoopFlightServer; let ReactNoopFlightClient; +let getDebugInfo; describe('ReactFlight', () => { beforeEach(() => { @@ -91,6 +53,11 @@ describe('ReactFlight', () => { ReactNoop = require('react-noop-renderer'); ReactNoopFlightClient = require('react-noop-renderer/flight-client'); act = require('internal-test-utils').act; + + getDebugInfo = require('internal-test-utils').getDebugInfo.bind(null, { + useV8Stack: true, + ignoreRscStreamInfo: true, + }); }); afterEach(() => { diff --git a/packages/react-dom-bindings/src/client/ReactFiberConfigDOM.js b/packages/react-dom-bindings/src/client/ReactFiberConfigDOM.js index fc80826678e23..8f67e12db1e1f 100644 --- a/packages/react-dom-bindings/src/client/ReactFiberConfigDOM.js +++ b/packages/react-dom-bindings/src/client/ReactFiberConfigDOM.js @@ -125,6 +125,7 @@ import { enableViewTransition, enableHydrationChangeEvent, enableFragmentRefsScrollIntoView, + enableProfilerTimer, } from 'shared/ReactFeatureFlags'; import { HostComponent, @@ -2098,6 +2099,7 @@ export function startViewTransition( spawnedWorkCallback: () => void, passiveCallback: () => mixed, errorCallback: mixed => void, + blockedCallback: string => void, // Profiling-only ): null | RunningViewTransition { const ownerDocument: Document = rootContainer.nodeType === DOCUMENT_NODE @@ -2131,10 +2133,10 @@ export function startViewTransition( blockingPromises.push(ownerDocument.fonts.ready); } } + const blockingIndexSnapshot = blockingPromises.length; if (suspendedState !== null) { // Suspend on any images that still haven't loaded and are in the viewport. const suspenseyImages = suspendedState.suspenseyImages; - const blockingIndexSnapshot = blockingPromises.length; let imgBytes = 0; for (let i = 0; i < suspenseyImages.length; i++) { const suspenseyImage = suspenseyImages[i]; @@ -2162,6 +2164,15 @@ export function startViewTransition( } } if (blockingPromises.length > 0) { + if (enableProfilerTimer) { + const blockedReason = + blockingIndexSnapshot > 0 + ? blockingPromises.length > blockingIndexSnapshot + ? 'Waiting on Fonts and Images' + : 'Waiting on Fonts' + : 'Waiting on Images'; + blockedCallback(blockedReason); + } const blockingReady = Promise.race([ Promise.all(blockingPromises), new Promise(resolve => diff --git a/packages/react-native-renderer/src/ReactFiberConfigNative.js b/packages/react-native-renderer/src/ReactFiberConfigNative.js index c9a5fb591bfd8..8271a62327aea 100644 --- a/packages/react-native-renderer/src/ReactFiberConfigNative.js +++ b/packages/react-native-renderer/src/ReactFiberConfigNative.js @@ -673,6 +673,7 @@ export function startViewTransition( spawnedWorkCallback: () => void, passiveCallback: () => mixed, errorCallback: mixed => void, + blockedCallback: string => void, // Profiling-only ): null | RunningViewTransition { mutationCallback(); layoutCallback(); diff --git a/packages/react-reconciler/src/ReactFiberPerformanceTrack.js b/packages/react-reconciler/src/ReactFiberPerformanceTrack.js index 92ca7e00e2696..67438b7f817e8 100644 --- a/packages/react-reconciler/src/ReactFiberPerformanceTrack.js +++ b/packages/react-reconciler/src/ReactFiberPerformanceTrack.js @@ -1254,6 +1254,45 @@ export function logSuspendedCommitPhase( } } +export function logSuspendedViewTransitionPhase( + startTime: number, + endTime: number, + reason: string, + debugTask: null | ConsoleTask, +): void { + // This means the commit was suspended on CSS or images. + if (supportsUserTiming) { + if (endTime <= startTime) { + return; + } + // TODO: Include the exact reason and URLs of what resources suspended. + // TODO: This might also be Suspended while waiting on a View Transition. + if (__DEV__ && debugTask) { + debugTask.run( + // $FlowFixMe[method-unbinding] + console.timeStamp.bind( + console, + reason, + startTime, + endTime, + currentTrack, + LANES_TRACK_GROUP, + 'secondary-light', + ), + ); + } else { + console.timeStamp( + reason, + startTime, + endTime, + currentTrack, + LANES_TRACK_GROUP, + 'secondary-light', + ); + } + } +} + export function logCommitErrored( startTime: number, endTime: number, diff --git a/packages/react-reconciler/src/ReactFiberWorkLoop.js b/packages/react-reconciler/src/ReactFiberWorkLoop.js index d141c2855f66e..b2b53281b9234 100644 --- a/packages/react-reconciler/src/ReactFiberWorkLoop.js +++ b/packages/react-reconciler/src/ReactFiberWorkLoop.js @@ -81,6 +81,7 @@ import { logSuspendedWithDelayPhase, logSuspenseThrottlePhase, logSuspendedCommitPhase, + logSuspendedViewTransitionPhase, logCommitPhase, logPaintYieldPhase, logStartViewTransitionYieldPhase, @@ -704,6 +705,7 @@ let pendingTransitionTypes: null | TransitionTypes = null; let pendingDidIncludeRenderPhaseUpdate: boolean = false; let pendingSuspendedCommitReason: SuspendedCommitReason = IMMEDIATE_COMMIT; // Profiling-only let pendingDelayedCommitReason: DelayedCommitReason = IMMEDIATE_COMMIT; // Profiling-only +let pendingSuspendedViewTransitionReason: null | string = null; // Profiling-only // Use these to prevent an infinite loop of nested updates const NESTED_UPDATE_LIMIT = 50; @@ -3445,6 +3447,7 @@ function commitRoot( pendingEffectsRenderEndTime = completedRenderEndTime; pendingSuspendedCommitReason = suspendedCommitReason; pendingDelayedCommitReason = IMMEDIATE_COMMIT; + pendingSuspendedViewTransitionReason = null; } if (enableGestureTransition && isGestureRender(lanes)) { @@ -3604,6 +3607,7 @@ function commitRoot( flushSpawnedWork, flushPassiveEffects, reportViewTransitionError, + enableProfilerTimer ? suspendedViewTransition : (null: any), ); } else { // Flush synchronously. @@ -3624,6 +3628,24 @@ function reportViewTransitionError(error: mixed) { onRecoverableError(error, makeErrorInfo(null)); } +function suspendedViewTransition(reason: string): void { + if (enableProfilerTimer && enableComponentPerformanceTrack) { + // We'll split the commit into two phases, because we're suspended in the middle. + recordCommitEndTime(); + logCommitPhase( + pendingSuspendedCommitReason === IMMEDIATE_COMMIT + ? pendingEffectsRenderEndTime + : commitStartTime, + commitEndTime, + commitErrors, + pendingDelayedCommitReason === ABORTED_VIEW_TRANSITION_COMMIT, + workInProgressUpdateTask, + ); + pendingSuspendedViewTransitionReason = reason; + pendingSuspendedCommitReason = SUSPENDED_COMMIT; + } +} + function flushAfterMutationEffects(): void { if (pendingEffectsStatus !== PENDING_AFTER_MUTATION_PHASE) { return; @@ -3688,6 +3710,21 @@ function flushLayoutEffects(): void { } pendingEffectsStatus = NO_PENDING_EFFECTS; + if (enableProfilerTimer && enableComponentPerformanceTrack) { + const suspendedViewTransitionReason = pendingSuspendedViewTransitionReason; + if (suspendedViewTransitionReason !== null) { + // We suspended in the middle of the commit for the view transition. + // We'll start a new commit track now. + recordCommitTime(); + logSuspendedViewTransitionPhase( + commitEndTime, // The start is the end of the first commit part. + commitStartTime, // The end is the start of the second commit part. + suspendedViewTransitionReason, + workInProgressUpdateTask, + ); + } + } + const root = pendingEffectsRoot; const finishedWork = pendingFinishedWork; const lanes = pendingEffectsLanes; diff --git a/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js b/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js index ab4a054b019be..b7d7959f21db3 100644 --- a/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js +++ b/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js @@ -3,8 +3,6 @@ */ 'use strict'; -const path = require('path'); - import {patchSetImmediate} from '../../../../scripts/jest/patchSetImmediate'; let React; @@ -14,106 +12,12 @@ let ReactServerDOMServer; let ReactServerDOMClient; let Stream; let observer; +let getDebugInfo; const streamOptions = { objectMode: true, }; -const repoRoot = path.resolve(__dirname, '../../../../'); - -function normalizeStack(stack) { - if (!stack) { - return stack; - } - const copy = []; - for (let i = 0; i < stack.length; i++) { - const [name, file, line, col, enclosingLine, enclosingCol] = stack[i]; - copy.push([ - name, - file.replace(repoRoot, ''), - line, - col, - enclosingLine, - enclosingCol, - ]); - } - return copy; -} - -function normalizeIOInfo(ioInfo) { - const {debugTask, debugStack, debugLocation, ...copy} = ioInfo; - if (ioInfo.stack) { - copy.stack = normalizeStack(ioInfo.stack); - } - if (ioInfo.owner) { - copy.owner = normalizeDebugInfo(ioInfo.owner); - } - if (typeof ioInfo.start === 'number') { - copy.start = 0; - } - if (typeof ioInfo.end === 'number') { - copy.end = 0; - } - const promise = ioInfo.value; - if (promise) { - promise.then(); // init - if (promise.status === 'fulfilled') { - if (ioInfo.name === 'RSC stream') { - copy.byteSize = 0; - copy.value = { - value: 'stream', - }; - } else { - copy.value = { - value: promise.value, - }; - } - } else if (promise.status === 'rejected') { - copy.value = { - reason: promise.reason, - }; - } else { - copy.value = { - status: promise.status, - }; - } - } - return copy; -} - -function normalizeDebugInfo(original) { - const {debugTask, debugStack, debugLocation, ...debugInfo} = original; - if (original.owner) { - debugInfo.owner = normalizeDebugInfo(original.owner); - } - if (original.awaited) { - debugInfo.awaited = normalizeIOInfo(original.awaited); - } - if (debugInfo.props) { - debugInfo.props = {}; - } - if (Array.isArray(debugInfo.stack)) { - debugInfo.stack = normalizeStack(debugInfo.stack); - return debugInfo; - } else if (typeof debugInfo.time === 'number') { - return {...debugInfo, time: 0}; - } else { - return debugInfo; - } -} - -function getDebugInfo(obj) { - const debugInfo = obj._debugInfo; - if (debugInfo) { - const copy = []; - for (let i = 0; i < debugInfo.length; i++) { - copy.push(normalizeDebugInfo(debugInfo[i])); - } - return copy; - } - return debugInfo; -} - function filterStackFrame(filename, functionName) { return ( !filename.startsWith('node:') && @@ -153,6 +57,11 @@ describe('ReactFlightAsyncDebugInfo', () => { React = require('react'); ReactServerDOMClient = require('react-server-dom-webpack/client'); Stream = require('stream'); + + getDebugInfo = require('internal-test-utils').getDebugInfo.bind(null, { + ignoreProps: true, + useFixedTime: true, + }); }); afterEach(() => { @@ -247,9 +156,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 216, + 125, 109, - 196, + 105, 50, ], ], @@ -271,9 +180,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 216, + 125, 109, - 196, + 105, 50, ], ], @@ -282,25 +191,25 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "delay", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 174, + 83, 12, - 173, + 82, 3, ], [ "getData", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 198, + 107, 13, - 197, + 106, 5, ], [ "Component", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 205, + 114, 26, - 204, + 113, 5, ], ], @@ -319,9 +228,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 216, + 125, 109, - 196, + 105, 50, ], ], @@ -330,17 +239,17 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "getData", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 198, + 107, 13, - 197, + 106, 5, ], [ "Component", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 205, + 114, 26, - 204, + 113, 5, ], ], @@ -365,9 +274,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 216, + 125, 109, - 196, + 105, 50, ], ], @@ -376,25 +285,25 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "delay", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 174, + 83, 12, - 173, + 82, 3, ], [ "getData", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 199, + 108, 21, - 197, + 106, 5, ], [ "Component", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 205, + 114, 20, - 204, + 113, 5, ], ], @@ -413,9 +322,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 216, + 125, 109, - 196, + 105, 50, ], ], @@ -424,17 +333,17 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "getData", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 200, + 109, 21, - 197, + 106, 5, ], [ "Component", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 205, + 114, 20, - 204, + 113, 5, ], ], @@ -454,9 +363,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Component", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 207, + 116, 60, - 204, + 113, 5, ], ], @@ -478,9 +387,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 216, + 125, 109, - 196, + 105, 50, ], ], @@ -489,17 +398,17 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "delay", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 174, + 83, 12, - 173, + 82, 3, ], [ "getData", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 199, + 108, 21, - 197, + 106, 5, ], ], @@ -518,9 +427,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Component", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 207, + 116, 60, - 204, + 113, 5, ], ], @@ -529,9 +438,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "InnerComponent", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 213, + 122, 35, - 210, + 119, 5, ], ], @@ -712,9 +621,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 676, + 585, 40, - 657, + 566, 49, ], [ @@ -744,9 +653,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 676, + 585, 40, - 657, + 566, 49, ], [ @@ -763,25 +672,25 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "delay", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 174, + 83, 12, - 173, + 82, 3, ], [ "getData", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 659, + 568, 13, - 658, + 567, 5, ], [ "Component", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 664, + 573, 36, - 663, + 572, 5, ], ], @@ -800,9 +709,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 676, + 585, 40, - 657, + 566, 49, ], [ @@ -819,17 +728,17 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "getData", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 659, + 568, 13, - 658, + 567, 5, ], [ "Component", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 664, + 573, 36, - 663, + 572, 5, ], ], @@ -849,9 +758,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Component", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 666, + 575, 60, - 663, + 572, 5, ], ], @@ -870,9 +779,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 676, + 585, 40, - 657, + 566, 49, ], [ @@ -889,25 +798,25 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "delay", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 174, + 83, 12, - 173, + 82, 3, ], [ "getData", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 659, + 568, 13, - 658, + 567, 5, ], [ "Component", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 665, + 574, 22, - 663, + 572, 5, ], ], @@ -926,9 +835,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Component", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 666, + 575, 60, - 663, + 572, 5, ], ], @@ -937,9 +846,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "InnerComponent", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 672, + 581, 40, - 669, + 578, 5, ], ], @@ -1014,9 +923,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 983, + 892, 109, - 970, + 879, 80, ], ], @@ -1035,9 +944,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 983, + 892, 109, - 970, + 879, 80, ], ], @@ -1054,9 +963,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 983, + 892, 109, - 970, + 879, 80, ], ], @@ -1128,9 +1037,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1097, + 1006, 109, - 1088, + 997, 94, ], ], @@ -1213,9 +1122,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1182, + 1091, 109, - 1158, + 1067, 50, ], ], @@ -1309,9 +1218,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1278, + 1187, 109, - 1261, + 1170, 63, ], ], @@ -1328,17 +1237,17 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "fetchThirdParty", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 181, + 90, 40, - 179, + 88, 3, ], [ "Component", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1274, + 1183, 24, - 1273, + 1182, 5, ], ], @@ -1360,17 +1269,17 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "fetchThirdParty", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 181, + 90, 40, - 179, + 88, 3, ], [ "Component", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1274, + 1183, 24, - 1273, + 1182, 5, ], ], @@ -1379,25 +1288,25 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "delay", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 174, + 83, 12, - 173, + 82, 3, ], [ "getData", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1263, + 1172, 13, - 1262, + 1171, 5, ], [ "ThirdPartyComponent", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1269, + 1178, 24, - 1268, + 1177, 5, ], ], @@ -1416,17 +1325,17 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "fetchThirdParty", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 181, + 90, 40, - 179, + 88, 3, ], [ "Component", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1274, + 1183, 24, - 1273, + 1182, 5, ], ], @@ -1435,17 +1344,17 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "getData", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1263, + 1172, 13, - 1262, + 1171, 5, ], [ "ThirdPartyComponent", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1269, + 1178, 24, - 1268, + 1177, 5, ], ], @@ -1470,17 +1379,17 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "fetchThirdParty", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 181, + 90, 40, - 179, + 88, 3, ], [ "Component", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1274, + 1183, 24, - 1273, + 1182, 5, ], ], @@ -1489,25 +1398,25 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "delay", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 174, + 83, 12, - 173, + 82, 3, ], [ "getData", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1264, + 1173, 13, - 1262, + 1171, 5, ], [ "ThirdPartyComponent", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1269, + 1178, 18, - 1268, + 1177, 5, ], ], @@ -1526,17 +1435,17 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "fetchThirdParty", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 181, + 90, 40, - 179, + 88, 3, ], [ "Component", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1274, + 1183, 24, - 1273, + 1182, 5, ], ], @@ -1545,17 +1454,17 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "getData", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1264, + 1173, 13, - 1262, + 1171, 5, ], [ "ThirdPartyComponent", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1269, + 1178, 18, - 1268, + 1177, 5, ], ], @@ -1653,9 +1562,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1617, + 1526, 40, - 1600, + 1509, 62, ], [ @@ -1685,9 +1594,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1617, + 1526, 40, - 1600, + 1509, 62, ], [ @@ -1704,25 +1613,25 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "delay", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 174, + 83, 12, - 173, + 82, 3, ], [ "getData", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1602, + 1511, 13, - 1601, + 1510, 25, ], [ "Component", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1612, + 1521, 13, - 1611, + 1520, 5, ], ], @@ -1741,9 +1650,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1617, + 1526, 40, - 1600, + 1509, 62, ], [ @@ -1760,17 +1669,17 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "getData", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1602, + 1511, 13, - 1601, + 1510, 25, ], [ "Component", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1612, + 1521, 13, - 1611, + 1520, 5, ], ], @@ -1790,9 +1699,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Component", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1613, + 1522, 60, - 1611, + 1520, 5, ], ], @@ -1814,9 +1723,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1617, + 1526, 40, - 1600, + 1509, 62, ], [ @@ -1833,25 +1742,25 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "delay", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 174, + 83, 12, - 173, + 82, 3, ], [ "getData", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1602, + 1511, 13, - 1601, + 1510, 25, ], [ "Component", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1612, + 1521, 13, - 1611, + 1520, 5, ], ], @@ -1870,9 +1779,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Component", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1613, + 1522, 60, - 1611, + 1520, 5, ], ], @@ -1881,9 +1790,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Child", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1607, + 1516, 28, - 1606, + 1515, 5, ], ], @@ -1966,9 +1875,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1930, + 1839, 40, - 1914, + 1823, 57, ], [ @@ -1998,9 +1907,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1930, + 1839, 40, - 1914, + 1823, 57, ], [ @@ -2017,25 +1926,25 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "delay", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 174, + 83, 12, - 173, + 82, 3, ], [ "getData", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1916, + 1825, 13, - 1915, + 1824, 25, ], [ "Component", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1925, + 1834, 23, - 1924, + 1833, 5, ], ], @@ -2054,9 +1963,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1930, + 1839, 40, - 1914, + 1823, 57, ], [ @@ -2073,17 +1982,17 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "getData", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1916, + 1825, 13, - 1915, + 1824, 25, ], [ "Component", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1925, + 1834, 23, - 1924, + 1833, 5, ], ], @@ -2103,9 +2012,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Component", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1926, + 1835, 60, - 1924, + 1833, 5, ], ], @@ -2124,9 +2033,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1930, + 1839, 40, - 1914, + 1823, 57, ], [ @@ -2143,25 +2052,25 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "delay", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 174, + 83, 12, - 173, + 82, 3, ], [ "getData", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1916, + 1825, 13, - 1915, + 1824, 25, ], [ "Component", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1925, + 1834, 23, - 1924, + 1833, 5, ], ], @@ -2175,9 +2084,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Component", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 1926, + 1835, 60, - 1924, + 1833, 5, ], ], @@ -2262,9 +2171,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2226, + 2135, 40, - 2208, + 2117, 80, ], [ @@ -2294,9 +2203,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2226, + 2135, 40, - 2208, + 2117, 80, ], [ @@ -2313,25 +2222,25 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "delay", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 174, + 83, 12, - 173, + 82, 3, ], [ "delayTrice", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2216, + 2125, 13, - 2214, + 2123, 5, ], [ "Bar", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2221, + 2130, 13, - 2220, + 2129, 5, ], ], @@ -2350,9 +2259,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2226, + 2135, 40, - 2208, + 2117, 80, ], [ @@ -2369,17 +2278,17 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "delayTrice", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2216, + 2125, 13, - 2214, + 2123, 5, ], [ "Bar", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2221, + 2130, 13, - 2220, + 2129, 5, ], ], @@ -2401,9 +2310,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2226, + 2135, 40, - 2208, + 2117, 80, ], [ @@ -2420,33 +2329,33 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "delay", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 174, + 83, 12, - 173, + 82, 3, ], [ "delayTwice", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2210, + 2119, 13, - 2209, + 2118, 5, ], [ "delayTrice", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2215, + 2124, 15, - 2214, + 2123, 5, ], [ "Bar", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2221, + 2130, 13, - 2220, + 2129, 5, ], ], @@ -2465,9 +2374,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2226, + 2135, 40, - 2208, + 2117, 80, ], [ @@ -2484,25 +2393,25 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "delayTwice", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2210, + 2119, 13, - 2209, + 2118, 5, ], [ "delayTrice", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2215, + 2124, 15, - 2214, + 2123, 5, ], [ "Bar", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2221, + 2130, 13, - 2220, + 2129, 5, ], ], @@ -2524,9 +2433,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2226, + 2135, 40, - 2208, + 2117, 80, ], [ @@ -2543,17 +2452,17 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "delay", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 174, + 83, 12, - 173, + 82, 3, ], [ "delayTwice", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2211, + 2120, 13, - 2209, + 2118, 5, ], ], @@ -2572,9 +2481,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2226, + 2135, 40, - 2208, + 2117, 80, ], [ @@ -2591,9 +2500,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "delayTwice", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2211, + 2120, 13, - 2209, + 2118, 5, ], ], @@ -2666,9 +2575,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2635, + 2544, 109, - 2624, + 2533, 58, ], ], @@ -2690,9 +2599,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2635, + 2544, 109, - 2624, + 2533, 58, ], ], @@ -2701,25 +2610,25 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "delay", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 174, + 83, 12, - 173, + 82, 3, ], [ "getData", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2626, + 2535, 14, - 2625, + 2534, 5, ], [ "Component", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2632, + 2541, 20, - 2631, + 2540, 5, ], ], @@ -2738,9 +2647,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2635, + 2544, 109, - 2624, + 2533, 58, ], ], @@ -2749,17 +2658,17 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "getData", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2626, + 2535, 23, - 2625, + 2534, 5, ], [ "Component", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2632, + 2541, 20, - 2631, + 2540, 5, ], ], @@ -2838,9 +2747,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2802, + 2711, 40, - 2790, + 2699, 56, ], [ @@ -2870,9 +2779,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2802, + 2711, 40, - 2790, + 2699, 56, ], [ @@ -2889,17 +2798,17 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "delay", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 174, + 83, 12, - 173, + 82, 3, ], [ "Component", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2798, + 2707, 20, - 2797, + 2706, 5, ], ], @@ -2918,9 +2827,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2802, + 2711, 40, - 2790, + 2699, 56, ], [ @@ -2937,9 +2846,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Component", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2798, + 2707, 20, - 2797, + 2706, 5, ], ], @@ -3032,9 +2941,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2991, + 2900, 40, - 2970, + 2879, 42, ], [ @@ -3064,9 +2973,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2991, + 2900, 40, - 2970, + 2879, 42, ], [ @@ -3083,17 +2992,17 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2977, + 2886, 15, - 2976, + 2885, 15, ], [ "Component", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2986, + 2895, 19, - 2985, + 2894, 5, ], ], @@ -3112,9 +3021,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2991, + 2900, 40, - 2970, + 2879, 42, ], [ @@ -3131,17 +3040,17 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2977, + 2886, 15, - 2976, + 2885, 15, ], [ "Component", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2986, + 2895, 19, - 2985, + 2894, 5, ], ], @@ -3163,9 +3072,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2991, + 2900, 40, - 2970, + 2879, 42, ], [ @@ -3182,9 +3091,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Component", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2986, + 2895, 25, - 2985, + 2894, 5, ], ], @@ -3203,9 +3112,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Object.", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2991, + 2900, 40, - 2970, + 2879, 42, ], [ @@ -3222,9 +3131,9 @@ describe('ReactFlightAsyncDebugInfo', () => { [ "Component", "/packages/react-server/src/__tests__/ReactFlightAsyncDebugInfo-test.js", - 2986, + 2895, 25, - 2985, + 2894, 5, ], ], diff --git a/packages/react-test-renderer/src/ReactFiberConfigTestHost.js b/packages/react-test-renderer/src/ReactFiberConfigTestHost.js index 86621f68480b8..7b1477fa25602 100644 --- a/packages/react-test-renderer/src/ReactFiberConfigTestHost.js +++ b/packages/react-test-renderer/src/ReactFiberConfigTestHost.js @@ -423,6 +423,7 @@ export function startViewTransition( spawnedWorkCallback: () => void, passiveCallback: () => mixed, errorCallback: mixed => void, + blockedCallback: string => void, // Profiling-only ): null | RunningViewTransition { mutationCallback(); layoutCallback();