@samitouri / QOS-React-2 / commits / 46a6d77e32

Unify JSResourceReference Interfaces (#24507)

Timothy Yung committed May 6, 2022 at 11:24 UTC 46a6d77e32d00c8c71ab989ca88b1c51aad07cdd
12 files changed +45 -32
packages/react-server-dom-relay/src/ReactFlightDOMRelayClientHostConfig.js
+1 -1
@@ -9,7 +9,7 @@
9
10 import type {JSONValue, ResponseBase} from 'react-client/src/ReactFlightClient';
11
12 -import type JSResourceReference from 'JSResourceReference';
12 +import type {JSResourceReference} from 'JSResourceReference';
13
14 export type ModuleReference<T> = JSResourceReference<T>;
15
packages/react-server-dom-relay/src/ReactFlightDOMRelayServerHostConfig.js
+3 -2
@@ -11,7 +11,8 @@ import type {RowEncoding, JSONValue} from './ReactFlightDOMRelayProtocol';
11
12 import type {Request, ReactModel} from 'react-server/src/ReactFlightServer';
13
14 -import JSResourceReference from 'JSResourceReference';
14 +import type {JSResourceReference} from 'JSResourceReference';
15 +import JSResourceReferenceImpl from 'JSResourceReferenceImpl';
16
17 import hasOwnProperty from 'shared/hasOwnProperty';
18 import isArray from 'shared/isArray';
@@ -39,7 +40,7 @@ export type {
40 } from 'ReactFlightDOMRelayServerIntegration';
41
42 export function isModuleReference(reference: Object): boolean {
42 - return reference instanceof JSResourceReference;
43 + return reference instanceof JSResourceReferenceImpl;
44 }
45
46 export type ModuleKey = ModuleReference<any>;
packages/react-server-dom-relay/src/__mocks__/JSResourceReferenceImpl.js renamed
+4 -4
@@ -7,13 +7,13 @@
7
8 'use strict';
9
10 -class JSResourceReference {
11 - constructor(exportedValue) {
12 - this._moduleId = exportedValue;
10 +class JSResourceReferenceImpl {
11 + constructor(moduleId) {
12 + this._moduleId = moduleId;
13 }
14 getModuleId() {
15 return this._moduleId;
16 }
17 }
18
19 -module.exports = JSResourceReference;
19 +module.exports = JSResourceReferenceImpl;
packages/react-server-dom-relay/src/__mocks__/ReactFlightDOMRelayClientIntegration.js
+2 -2
@@ -7,11 +7,11 @@
7
8 'use strict';
9
10 -import JSResourceReference from 'JSResourceReference';
10 +import JSResourceReferenceImpl from 'JSResourceReferenceImpl';
11
12 const ReactFlightDOMRelayClientIntegration = {
13 resolveModuleReference(moduleData) {
14 - return new JSResourceReference(moduleData);
14 + return new JSResourceReferenceImpl(moduleData);
15 },
16 preloadModule(moduleReference) {},
17 requireModule(moduleReference) {
packages/react-server-dom-relay/src/__tests__/ReactFlightDOMRelay-test.internal.js
+3 -3
@@ -10,7 +10,7 @@
10 let act;
11 let React;
12 let ReactDOMClient;
13 -let JSResourceReference;
13 +let JSResourceReferenceImpl;
14 let ReactDOMFlightRelayServer;
15 let ReactDOMFlightRelayClient;
16 let SuspenseList;
@@ -24,7 +24,7 @@ describe('ReactFlightDOMRelay', () => {
24 ReactDOMClient = require('react-dom/client');
25 ReactDOMFlightRelayServer = require('react-server-dom-relay/server');
26 ReactDOMFlightRelayClient = require('react-server-dom-relay');
27 - JSResourceReference = require('JSResourceReference');
27 + JSResourceReferenceImpl = require('JSResourceReferenceImpl');
28 if (gate(flags => flags.enableSuspenseList)) {
29 SuspenseList = React.SuspenseList;
30 }
@@ -84,7 +84,7 @@ describe('ReactFlightDOMRelay', () => {
84 </span>
85 );
86 }
87 - const User = new JSResourceReference(UserClient);
87 + const User = new JSResourceReferenceImpl(UserClient);
88
89 function Greeting({firstName, lastName}) {
90 return <User greeting="Hello" name={firstName + ' ' + lastName} />;
packages/react-server-native-relay/src/ReactFlightNativeRelayClientHostConfig.js
+1 -1
@@ -9,7 +9,7 @@
9
10 import type {JSONValue, ResponseBase} from 'react-client/src/ReactFlightClient';
11
12 -import type JSResourceReference from 'JSResourceReference';
12 +import type {JSResourceReference} from 'JSResourceReference';
13
14 export type ModuleReference<T> = JSResourceReference<T>;
15
packages/react-server-native-relay/src/ReactFlightNativeRelayServerHostConfig.js
+2 -1
@@ -11,9 +11,10 @@ import type {RowEncoding, JSONValue} from './ReactFlightNativeRelayProtocol';
11 import type {Request, ReactModel} from 'react-server/src/ReactFlightServer';
12 import hasOwnProperty from 'shared/hasOwnProperty';
13 import isArray from 'shared/isArray';
14 +import type {JSResourceReference} from 'JSResourceReference';
15 import JSResourceReferenceImpl from 'JSResourceReferenceImpl';
16
16 -export type ModuleReference<T> = JSResourceReferenceImpl<T>;
17 +export type ModuleReference<T> = JSResourceReference<T>;
18
19 import type {
20 Destination,
packages/react-server-native-relay/src/__mocks__/JSResourceReferenceImpl.js
+2 -2
@@ -8,8 +8,8 @@
8 'use strict';
9
10 class JSResourceReferenceImpl {
11 - constructor(exportedValue) {
12 - this._moduleId = exportedValue;
11 + constructor(moduleId) {
12 + this._moduleId = moduleId;
13 }
14 getModuleId() {
15 return this._moduleId;
packages/react-server-native-relay/src/__mocks__/ReactFlightNativeRelayClientIntegration.js
+2 -2
@@ -7,11 +7,11 @@
7
8 'use strict';
9
10 -import JSResourceReference from 'JSResourceReference';
10 +import JSResourceReferenceImpl from 'JSResourceReferenceImpl';
11
12 const ReactFlightNativeRelayClientIntegration = {
13 resolveModuleReference(moduleData) {
14 - return new JSResourceReference(moduleData);
14 + return new JSResourceReferenceImpl(moduleData);
15 },
16 preloadModule(moduleReference) {},
17 requireModule(moduleReference) {
scripts/flow/react-relay-hooks.js
+22 -11
@@ -15,24 +15,29 @@ type JSONValue =
15 | {+[key: string]: JSONValue}
16 | $ReadOnlyArray<JSONValue>;
17
18 -declare class JSResourceReference<T> {
19 - _moduleId: T;
20 - getModuleId(): string;
21 -}
22 -
23 -// Haste
18 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 + }
26 }
27
28 -// Metro
28 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 + }
36 }
37
38 declare module 'ReactFlightDOMRelayServerIntegration' {
39 + import type {JSResourceReference} from 'JSResourceReference';
40 +
41 declare export opaque type Destination;
42 declare export opaque type BundlerConfig;
43 declare export function emitRow(
@@ -49,6 +54,8 @@ declare module 'ReactFlightDOMRelayServerIntegration' {
54 }
55
56 declare module 'ReactFlightDOMRelayClientIntegration' {
57 + import type {JSResourceReference} from 'JSResourceReference';
58 +
59 declare export opaque type ModuleMetaData;
60 declare export function resolveModuleReference<T>(
61 moduleData: ModuleMetaData,
@@ -62,6 +69,8 @@ declare module 'ReactFlightDOMRelayClientIntegration' {
69 }
70
71 declare module 'ReactFlightNativeRelayServerIntegration' {
72 + import type {JSResourceReference} from 'JSResourceReference';
73 +
74 declare export opaque type Destination;
75 declare export opaque type BundlerConfig;
76 declare export function emitRow(
@@ -78,6 +87,8 @@ declare module 'ReactFlightNativeRelayServerIntegration' {
87 }
88
89 declare module 'ReactFlightNativeRelayClientIntegration' {
90 + import type {JSResourceReference} from 'JSResourceReference';
91 +
92 declare export opaque type ModuleMetaData;
93 declare export function resolveModuleReference<T>(
94 moduleData: ModuleMetaData,
scripts/rollup/bundles.js
+2 -2
@@ -405,7 +405,7 @@ const bundles = [
405 externals: [
406 'react',
407 'ReactFlightDOMRelayServerIntegration',
408 - 'JSResourceReference',
408 + 'JSResourceReferenceImpl',
409 ],
410 },
411
@@ -420,7 +420,7 @@ const bundles = [
420 externals: [
421 'react',
422 'ReactFlightDOMRelayClientIntegration',
423 - 'JSResourceReference',
423 + 'JSResourceReferenceImpl',
424 ],
425 },
426
yarn.lock
+1 -1
@@ -13629,7 +13629,7 @@ rc@^1.0.1, rc@^1.1.6, rc@^1.2.8:
13629 prop-types "^15.6.2"
13630 scheduler "^0.13.0"
13631
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":
13633 version "17.0.2"
13634 resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
13635 integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==