Skip to content

Commit 2db701a

Browse files
authored
Merge branch 'main' into rm-proptypes
2 parents bdea370 + 4ea424e commit 2db701a

File tree

76 files changed

+968
-627
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

76 files changed

+968
-627
lines changed

.github/workflows/commit_artifacts.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
www_branch_count: ${{ steps.check_branches.outputs.www_branch_count }}
1212
fbsource_branch_count: ${{ steps.check_branches.outputs.fbsource_branch_count }}
1313
steps:
14-
- uses: actions/checkout@v3
14+
- uses: actions/checkout@v4
1515
- name: "Check branches"
1616
id: check_branches
1717
run: |
@@ -179,7 +179,7 @@ jobs:
179179
if: ${{ (github.ref == 'refs/heads/main' && needs.download_artifacts.outputs.www_branch_count == '0') || github.ref == 'refs/heads/meta-www' }}
180180
runs-on: ubuntu-latest
181181
steps:
182-
- uses: actions/checkout@v3
182+
- uses: actions/checkout@v4
183183
with:
184184
ref: builds/facebook-www
185185
- name: Ensure clean directory
@@ -215,7 +215,7 @@ jobs:
215215
runs-on: ubuntu-latest
216216
if: ${{ (github.ref == 'refs/heads/main' && needs.download_artifacts.outputs.fbsource_branch_count == '0') || github.ref == 'refs/heads/meta-fbsource' }}
217217
steps:
218-
- uses: actions/checkout@v3
218+
- uses: actions/checkout@v4
219219
with:
220220
ref: main
221221
repository: facebook/react-fbsource-import

packages/jest-react/src/JestReact.js

+38-23
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
*/
77

88
import {REACT_ELEMENT_TYPE, REACT_FRAGMENT_TYPE} from 'shared/ReactSymbols';
9+
import {enableRefAsProp} from 'shared/ReactFeatureFlags';
910

1011
import isArray from 'shared/isArray';
1112

@@ -38,6 +39,34 @@ function assertYieldsWereCleared(root) {
3839
}
3940
}
4041

42+
function createJSXElementForTestComparison(type, props) {
43+
if (__DEV__ && enableRefAsProp) {
44+
const element = {
45+
$$typeof: REACT_ELEMENT_TYPE,
46+
type: type,
47+
key: null,
48+
props: props,
49+
_owner: null,
50+
_store: __DEV__ ? {} : undefined,
51+
};
52+
Object.defineProperty(element, 'ref', {
53+
enumerable: false,
54+
value: null,
55+
});
56+
return element;
57+
} else {
58+
return {
59+
$$typeof: REACT_ELEMENT_TYPE,
60+
type: type,
61+
key: null,
62+
ref: null,
63+
props: props,
64+
_owner: null,
65+
_store: __DEV__ ? {} : undefined,
66+
};
67+
}
68+
}
69+
4170
export function unstable_toMatchRenderedOutput(root, expectedJSX) {
4271
assertYieldsWereCleared(root);
4372
const actualJSON = root.toJSON();
@@ -55,17 +84,9 @@ export function unstable_toMatchRenderedOutput(root, expectedJSX) {
5584
if (actualJSXChildren === null || typeof actualJSXChildren === 'string') {
5685
actualJSX = actualJSXChildren;
5786
} else {
58-
actualJSX = {
59-
$$typeof: REACT_ELEMENT_TYPE,
60-
type: REACT_FRAGMENT_TYPE,
61-
key: null,
62-
ref: null,
63-
props: {
64-
children: actualJSXChildren,
65-
},
66-
_owner: null,
67-
_store: __DEV__ ? {} : undefined,
68-
};
87+
actualJSX = createJSXElementForTestComparison(REACT_FRAGMENT_TYPE, {
88+
children: actualJSXChildren,
89+
});
6990
}
7091
}
7192
} else {
@@ -82,18 +103,12 @@ function jsonChildToJSXChild(jsonChild) {
82103
return jsonChild;
83104
} else {
84105
const jsxChildren = jsonChildrenToJSXChildren(jsonChild.children);
85-
return {
86-
$$typeof: REACT_ELEMENT_TYPE,
87-
type: jsonChild.type,
88-
key: null,
89-
ref: null,
90-
props:
91-
jsxChildren === null
92-
? jsonChild.props
93-
: {...jsonChild.props, children: jsxChildren},
94-
_owner: null,
95-
_store: __DEV__ ? {} : undefined,
96-
};
106+
return createJSXElementForTestComparison(
107+
jsonChild.type,
108+
jsxChildren === null
109+
? jsonChild.props
110+
: {...jsonChild.props, children: jsxChildren},
111+
);
97112
}
98113
}
99114

packages/react-client/src/ReactFlightClient.js

+40-14
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,11 @@ import type {
3535

3636
import type {Postpone} from 'react/src/ReactPostpone';
3737

38-
import {enableBinaryFlight, enablePostpone} from 'shared/ReactFeatureFlags';
38+
import {
39+
enableBinaryFlight,
40+
enablePostpone,
41+
enableRefAsProp,
42+
} from 'shared/ReactFeatureFlags';
3943

4044
import {
4145
resolveClientReference,
@@ -463,24 +467,46 @@ export function reportGlobalError(response: Response, error: Error): void {
463467
});
464468
}
465469

470+
function nullRefGetter() {
471+
if (__DEV__) {
472+
return null;
473+
}
474+
}
475+
466476
function createElement(
467477
type: mixed,
468478
key: mixed,
469479
props: mixed,
470480
): React$Element<any> {
471-
const element: any = {
472-
// This tag allows us to uniquely identify this as a React Element
473-
$$typeof: REACT_ELEMENT_TYPE,
474-
475-
// Built-in properties that belong on the element
476-
type: type,
477-
key: key,
478-
ref: null,
479-
props: props,
480-
481-
// Record the component responsible for creating this element.
482-
_owner: null,
483-
};
481+
let element: any;
482+
if (__DEV__ && enableRefAsProp) {
483+
// `ref` is non-enumerable in dev
484+
element = ({
485+
$$typeof: REACT_ELEMENT_TYPE,
486+
type,
487+
key,
488+
props,
489+
_owner: null,
490+
}: any);
491+
Object.defineProperty(element, 'ref', {
492+
enumerable: false,
493+
get: nullRefGetter,
494+
});
495+
} else {
496+
element = ({
497+
// This tag allows us to uniquely identify this as a React Element
498+
$$typeof: REACT_ELEMENT_TYPE,
499+
500+
type,
501+
key,
502+
ref: null,
503+
props,
504+
505+
// Record the component responsible for creating this element.
506+
_owner: null,
507+
}: any);
508+
}
509+
484510
if (__DEV__) {
485511
// We don't really need to add any of these but keeping them for good measure.
486512
// Unfortunately, _store is enumerable in jest matchers so for equality to

packages/react-client/src/__tests__/ReactFlight-test.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ describe('ReactFlight', () => {
197197
const rootModel = await ReactNoopFlightClient.read(transport);
198198
const greeting = rootModel.greeting;
199199
expect(greeting._debugInfo).toEqual(
200-
__DEV__ ? [{name: 'Greeting', env: 'server'}] : undefined,
200+
__DEV__ ? [{name: 'Greeting', env: 'Server'}] : undefined,
201201
);
202202
ReactNoop.render(greeting);
203203
});
@@ -224,7 +224,7 @@ describe('ReactFlight', () => {
224224
await act(async () => {
225225
const promise = ReactNoopFlightClient.read(transport);
226226
expect(promise._debugInfo).toEqual(
227-
__DEV__ ? [{name: 'Greeting', env: 'server'}] : undefined,
227+
__DEV__ ? [{name: 'Greeting', env: 'Server'}] : undefined,
228228
);
229229
ReactNoop.render(await promise);
230230
});
@@ -1970,7 +1970,7 @@ describe('ReactFlight', () => {
19701970
await act(async () => {
19711971
const promise = ReactNoopFlightClient.read(transport);
19721972
expect(promise._debugInfo).toEqual(
1973-
__DEV__ ? [{name: 'ServerComponent', env: 'server'}] : undefined,
1973+
__DEV__ ? [{name: 'ServerComponent', env: 'Server'}] : undefined,
19741974
);
19751975
const result = await promise;
19761976
const thirdPartyChildren = await result.props.children[1];

packages/react-client/src/forks/ReactFlightClientConfig.dom-browser-esm.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @flow
88
*/
99

10-
export * from 'react-client/src/ReactFlightClientConfigBrowser';
10+
export * from 'react-client/src/ReactFlightClientStreamConfigWeb';
1111
export * from 'react-server-dom-esm/src/ReactFlightClientConfigBundlerESM';
1212
export * from 'react-server-dom-esm/src/ReactFlightClientConfigTargetESMBrowser';
1313
export * from 'react-dom-bindings/src/shared/ReactFlightClientConfigDOM';

packages/react-client/src/forks/ReactFlightClientConfig.dom-browser-turbopack.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @flow
88
*/
99

10-
export * from 'react-client/src/ReactFlightClientConfigBrowser';
10+
export * from 'react-client/src/ReactFlightClientStreamConfigWeb';
1111
export * from 'react-server-dom-turbopack/src/ReactFlightClientConfigBundlerTurbopack';
1212
export * from 'react-server-dom-turbopack/src/ReactFlightClientConfigBundlerTurbopackBrowser';
1313
export * from 'react-server-dom-turbopack/src/ReactFlightClientConfigTargetTurbopackBrowser';

packages/react-client/src/forks/ReactFlightClientConfig.dom-browser.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @flow
88
*/
99

10-
export * from 'react-client/src/ReactFlightClientConfigBrowser';
10+
export * from 'react-client/src/ReactFlightClientStreamConfigWeb';
1111
export * from 'react-server-dom-webpack/src/ReactFlightClientConfigBundlerWebpack';
1212
export * from 'react-server-dom-webpack/src/ReactFlightClientConfigBundlerWebpackBrowser';
1313
export * from 'react-server-dom-webpack/src/ReactFlightClientConfigTargetWebpackBrowser';

packages/react-client/src/forks/ReactFlightClientConfig.dom-bun.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @flow
88
*/
99

10-
export * from 'react-client/src/ReactFlightClientConfigBrowser';
10+
export * from 'react-client/src/ReactFlightClientStreamConfigWeb';
1111
export * from 'react-dom-bindings/src/shared/ReactFlightClientConfigDOM';
1212

1313
export type Response = any;

packages/react-client/src/forks/ReactFlightClientConfig.dom-edge-turbopack.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @flow
88
*/
99

10-
export * from 'react-client/src/ReactFlightClientConfigBrowser';
10+
export * from 'react-client/src/ReactFlightClientStreamConfigWeb';
1111
export * from 'react-server-dom-turbopack/src/ReactFlightClientConfigBundlerTurbopack';
1212
export * from 'react-server-dom-turbopack/src/ReactFlightClientConfigBundlerTurbopackServer';
1313
export * from 'react-server-dom-turbopack/src/ReactFlightClientConfigTargetTurbopackServer';

packages/react-client/src/forks/ReactFlightClientConfig.dom-edge-webpack.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @flow
88
*/
99

10-
export * from 'react-client/src/ReactFlightClientConfigBrowser';
10+
export * from 'react-client/src/ReactFlightClientStreamConfigWeb';
1111
export * from 'react-server-dom-webpack/src/ReactFlightClientConfigBundlerWebpack';
1212
export * from 'react-server-dom-webpack/src/ReactFlightClientConfigBundlerWebpackServer';
1313
export * from 'react-server-dom-webpack/src/ReactFlightClientConfigTargetWebpackServer';

packages/react-client/src/forks/ReactFlightClientConfig.dom-fb-experimental.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @flow
88
*/
99

10-
export * from 'react-client/src/ReactFlightClientConfigBrowser';
10+
export * from 'react-client/src/ReactFlightClientStreamConfigWeb';
1111
export * from 'react-dom-bindings/src/shared/ReactFlightClientConfigDOM';
1212
export * from 'react-server-dom-fb/src/ReactFlightClientConfigFBBundler';
1313

packages/react-client/src/forks/ReactFlightClientConfig.dom-legacy.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @flow
88
*/
99

10-
export * from 'react-client/src/ReactFlightClientConfigBrowser';
10+
export * from 'react-client/src/ReactFlightClientStreamConfigWeb';
1111
export * from 'react-dom-bindings/src/shared/ReactFlightClientConfigDOM';
1212

1313
export type Response = any;

packages/react-client/src/forks/ReactFlightClientConfig.dom-node-esm.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @flow
88
*/
99

10-
export * from 'react-client/src/ReactFlightClientConfigNode';
10+
export * from 'react-client/src/ReactFlightClientStreamConfigNode';
1111
export * from 'react-server-dom-esm/src/ReactFlightClientConfigBundlerESM';
1212
export * from 'react-server-dom-esm/src/ReactFlightClientConfigTargetESMServer';
1313
export * from 'react-dom-bindings/src/shared/ReactFlightClientConfigDOM';

packages/react-client/src/forks/ReactFlightClientConfig.dom-node-turbopack-bundled.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @flow
88
*/
99

10-
export * from 'react-client/src/ReactFlightClientConfigNode';
10+
export * from 'react-client/src/ReactFlightClientStreamConfigNode';
1111
export * from 'react-server-dom-turbopack/src/ReactFlightClientConfigBundlerTurbopack';
1212
export * from 'react-server-dom-turbopack/src/ReactFlightClientConfigBundlerTurbopackServer';
1313
export * from 'react-server-dom-turbopack/src/ReactFlightClientConfigTargetTurbopackServer';

packages/react-client/src/forks/ReactFlightClientConfig.dom-node-turbopack.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @flow
88
*/
99

10-
export * from 'react-client/src/ReactFlightClientConfigNode';
10+
export * from 'react-client/src/ReactFlightClientStreamConfigNode';
1111
export * from 'react-server-dom-turbopack/src/ReactFlightClientConfigBundlerNode';
1212
export * from 'react-server-dom-turbopack/src/ReactFlightClientConfigTargetTurbopackServer';
1313
export * from 'react-dom-bindings/src/shared/ReactFlightClientConfigDOM';

packages/react-client/src/forks/ReactFlightClientConfig.dom-node-webpack.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @flow
88
*/
99

10-
export * from 'react-client/src/ReactFlightClientConfigNode';
10+
export * from 'react-client/src/ReactFlightClientStreamConfigNode';
1111
export * from 'react-server-dom-webpack/src/ReactFlightClientConfigBundlerWebpack';
1212
export * from 'react-server-dom-webpack/src/ReactFlightClientConfigBundlerWebpackServer';
1313
export * from 'react-server-dom-webpack/src/ReactFlightClientConfigTargetWebpackServer';

packages/react-client/src/forks/ReactFlightClientConfig.dom-node.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @flow
88
*/
99

10-
export * from 'react-client/src/ReactFlightClientConfigNode';
10+
export * from 'react-client/src/ReactFlightClientStreamConfigNode';
1111
export * from 'react-server-dom-webpack/src/ReactFlightClientConfigBundlerNode';
1212
export * from 'react-server-dom-webpack/src/ReactFlightClientConfigTargetWebpackServer';
1313
export * from 'react-dom-bindings/src/shared/ReactFlightClientConfigDOM';

0 commit comments

Comments
 (0)