Skip to content

Commit 46a6d77

Browse files
authored
Unify JSResourceReference Interfaces (#24507)
1 parent e531a4a commit 46a6d77

12 files changed

+45
-32
lines changed

packages/react-server-dom-relay/src/ReactFlightDOMRelayClientHostConfig.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
import type {JSONValue, ResponseBase} from 'react-client/src/ReactFlightClient';
1111

12-
import type JSResourceReference from 'JSResourceReference';
12+
import type {JSResourceReference} from 'JSResourceReference';
1313

1414
export type ModuleReference<T> = JSResourceReference<T>;
1515

packages/react-server-dom-relay/src/ReactFlightDOMRelayServerHostConfig.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ import type {RowEncoding, JSONValue} from './ReactFlightDOMRelayProtocol';
1111

1212
import type {Request, ReactModel} from 'react-server/src/ReactFlightServer';
1313

14-
import JSResourceReference from 'JSResourceReference';
14+
import type {JSResourceReference} from 'JSResourceReference';
15+
import JSResourceReferenceImpl from 'JSResourceReferenceImpl';
1516

1617
import hasOwnProperty from 'shared/hasOwnProperty';
1718
import isArray from 'shared/isArray';
@@ -39,7 +40,7 @@ export type {
3940
} from 'ReactFlightDOMRelayServerIntegration';
4041

4142
export function isModuleReference(reference: Object): boolean {
42-
return reference instanceof JSResourceReference;
43+
return reference instanceof JSResourceReferenceImpl;
4344
}
4445

4546
export type ModuleKey = ModuleReference<any>;

packages/react-server-dom-relay/src/__mocks__/JSResourceReference.js packages/react-server-dom-relay/src/__mocks__/JSResourceReferenceImpl.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@
77

88
'use strict';
99

10-
class JSResourceReference {
11-
constructor(exportedValue) {
12-
this._moduleId = exportedValue;
10+
class JSResourceReferenceImpl {
11+
constructor(moduleId) {
12+
this._moduleId = moduleId;
1313
}
1414
getModuleId() {
1515
return this._moduleId;
1616
}
1717
}
1818

19-
module.exports = JSResourceReference;
19+
module.exports = JSResourceReferenceImpl;

packages/react-server-dom-relay/src/__mocks__/ReactFlightDOMRelayClientIntegration.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77

88
'use strict';
99

10-
import JSResourceReference from 'JSResourceReference';
10+
import JSResourceReferenceImpl from 'JSResourceReferenceImpl';
1111

1212
const ReactFlightDOMRelayClientIntegration = {
1313
resolveModuleReference(moduleData) {
14-
return new JSResourceReference(moduleData);
14+
return new JSResourceReferenceImpl(moduleData);
1515
},
1616
preloadModule(moduleReference) {},
1717
requireModule(moduleReference) {

packages/react-server-dom-relay/src/__tests__/ReactFlightDOMRelay-test.internal.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
let act;
1111
let React;
1212
let ReactDOMClient;
13-
let JSResourceReference;
13+
let JSResourceReferenceImpl;
1414
let ReactDOMFlightRelayServer;
1515
let ReactDOMFlightRelayClient;
1616
let SuspenseList;
@@ -24,7 +24,7 @@ describe('ReactFlightDOMRelay', () => {
2424
ReactDOMClient = require('react-dom/client');
2525
ReactDOMFlightRelayServer = require('react-server-dom-relay/server');
2626
ReactDOMFlightRelayClient = require('react-server-dom-relay');
27-
JSResourceReference = require('JSResourceReference');
27+
JSResourceReferenceImpl = require('JSResourceReferenceImpl');
2828
if (gate(flags => flags.enableSuspenseList)) {
2929
SuspenseList = React.SuspenseList;
3030
}
@@ -84,7 +84,7 @@ describe('ReactFlightDOMRelay', () => {
8484
</span>
8585
);
8686
}
87-
const User = new JSResourceReference(UserClient);
87+
const User = new JSResourceReferenceImpl(UserClient);
8888

8989
function Greeting({firstName, lastName}) {
9090
return <User greeting="Hello" name={firstName + ' ' + lastName} />;

packages/react-server-native-relay/src/ReactFlightNativeRelayClientHostConfig.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
import type {JSONValue, ResponseBase} from 'react-client/src/ReactFlightClient';
1111

12-
import type JSResourceReference from 'JSResourceReference';
12+
import type {JSResourceReference} from 'JSResourceReference';
1313

1414
export type ModuleReference<T> = JSResourceReference<T>;
1515

packages/react-server-native-relay/src/ReactFlightNativeRelayServerHostConfig.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,10 @@ import type {RowEncoding, JSONValue} from './ReactFlightNativeRelayProtocol';
1111
import type {Request, ReactModel} from 'react-server/src/ReactFlightServer';
1212
import hasOwnProperty from 'shared/hasOwnProperty';
1313
import isArray from 'shared/isArray';
14+
import type {JSResourceReference} from 'JSResourceReference';
1415
import JSResourceReferenceImpl from 'JSResourceReferenceImpl';
1516

16-
export type ModuleReference<T> = JSResourceReferenceImpl<T>;
17+
export type ModuleReference<T> = JSResourceReference<T>;
1718

1819
import type {
1920
Destination,

packages/react-server-native-relay/src/__mocks__/JSResourceReferenceImpl.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
'use strict';
99

1010
class JSResourceReferenceImpl {
11-
constructor(exportedValue) {
12-
this._moduleId = exportedValue;
11+
constructor(moduleId) {
12+
this._moduleId = moduleId;
1313
}
1414
getModuleId() {
1515
return this._moduleId;

packages/react-server-native-relay/src/__mocks__/ReactFlightNativeRelayClientIntegration.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77

88
'use strict';
99

10-
import JSResourceReference from 'JSResourceReference';
10+
import JSResourceReferenceImpl from 'JSResourceReferenceImpl';
1111

1212
const ReactFlightNativeRelayClientIntegration = {
1313
resolveModuleReference(moduleData) {
14-
return new JSResourceReference(moduleData);
14+
return new JSResourceReferenceImpl(moduleData);
1515
},
1616
preloadModule(moduleReference) {},
1717
requireModule(moduleReference) {

scripts/flow/react-relay-hooks.js

+22-11
Original file line numberDiff line numberDiff line change
@@ -15,24 +15,29 @@ type JSONValue =
1515
| {+[key: string]: JSONValue}
1616
| $ReadOnlyArray<JSONValue>;
1717

18-
declare class JSResourceReference<T> {
19-
_moduleId: T;
20-
getModuleId(): string;
21-
}
22-
23-
// Haste
2418
declare module 'JSResourceReference' {
25-
declare export default typeof JSResourceReference;
19+
declare export interface JSResourceReference<T> {
20+
getModuleId(): string;
21+
getModuleIdAsRef(): $Flow$ModuleRef<T>;
22+
getModuleIfRequired(): ?T;
23+
load(): Promise<T>;
24+
preload(): void;
25+
}
2626
}
2727

28-
// Metro
2928
declare module 'JSResourceReferenceImpl' {
30-
declare export default class JSResourceReferenceImpl<
31-
T,
32-
> extends JSResourceReference<T> {}
29+
declare export default class JSResourceReferenceImpl<T> {
30+
getModuleId(): string;
31+
getModuleIdAsRef(): $Flow$ModuleRef<T>;
32+
getModuleIfRequired(): ?T;
33+
load(): Promise<T>;
34+
preload(): void;
35+
}
3336
}
3437

3538
declare module 'ReactFlightDOMRelayServerIntegration' {
39+
import type {JSResourceReference} from 'JSResourceReference';
40+
3641
declare export opaque type Destination;
3742
declare export opaque type BundlerConfig;
3843
declare export function emitRow(
@@ -49,6 +54,8 @@ declare module 'ReactFlightDOMRelayServerIntegration' {
4954
}
5055

5156
declare module 'ReactFlightDOMRelayClientIntegration' {
57+
import type {JSResourceReference} from 'JSResourceReference';
58+
5259
declare export opaque type ModuleMetaData;
5360
declare export function resolveModuleReference<T>(
5461
moduleData: ModuleMetaData,
@@ -62,6 +69,8 @@ declare module 'ReactFlightDOMRelayClientIntegration' {
6269
}
6370

6471
declare module 'ReactFlightNativeRelayServerIntegration' {
72+
import type {JSResourceReference} from 'JSResourceReference';
73+
6574
declare export opaque type Destination;
6675
declare export opaque type BundlerConfig;
6776
declare export function emitRow(
@@ -78,6 +87,8 @@ declare module 'ReactFlightNativeRelayServerIntegration' {
7887
}
7988

8089
declare module 'ReactFlightNativeRelayClientIntegration' {
90+
import type {JSResourceReference} from 'JSResourceReference';
91+
8192
declare export opaque type ModuleMetaData;
8293
declare export function resolveModuleReference<T>(
8394
moduleData: ModuleMetaData,

scripts/rollup/bundles.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,7 @@ const bundles = [
405405
externals: [
406406
'react',
407407
'ReactFlightDOMRelayServerIntegration',
408-
'JSResourceReference',
408+
'JSResourceReferenceImpl',
409409
],
410410
},
411411

@@ -420,7 +420,7 @@ const bundles = [
420420
externals: [
421421
'react',
422422
'ReactFlightDOMRelayClientIntegration',
423-
'JSResourceReference',
423+
'JSResourceReferenceImpl',
424424
],
425425
},
426426

yarn.lock

+1-1
Original file line numberDiff line numberDiff line change
@@ -13629,7 +13629,7 @@ rc@^1.0.1, rc@^1.1.6, rc@^1.2.8:
1362913629
prop-types "^15.6.2"
1363013630
scheduler "^0.13.0"
1363113631

13632-
react-is@^16.8.1, "react-is@npm:react-is":
13632+
react-is@^16.8.1, react-is@^17.0.1, "react-is@npm:react-is":
1363313633
version "17.0.2"
1363413634
resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
1363513635
integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==

0 commit comments

Comments
 (0)