Unify JSResourceReference Interfaces (#24507)
This commit is contained in:
parent
e531a4a62d
commit
46a6d77e32
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
import type {JSONValue, ResponseBase} from 'react-client/src/ReactFlightClient';
|
import type {JSONValue, ResponseBase} from 'react-client/src/ReactFlightClient';
|
||||||
|
|
||||||
import type JSResourceReference from 'JSResourceReference';
|
import type {JSResourceReference} from 'JSResourceReference';
|
||||||
|
|
||||||
export type ModuleReference<T> = JSResourceReference<T>;
|
export type ModuleReference<T> = JSResourceReference<T>;
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,8 @@ import type {RowEncoding, JSONValue} from './ReactFlightDOMRelayProtocol';
|
||||||
|
|
||||||
import type {Request, ReactModel} from 'react-server/src/ReactFlightServer';
|
import type {Request, ReactModel} from 'react-server/src/ReactFlightServer';
|
||||||
|
|
||||||
import JSResourceReference from 'JSResourceReference';
|
import type {JSResourceReference} from 'JSResourceReference';
|
||||||
|
import JSResourceReferenceImpl from 'JSResourceReferenceImpl';
|
||||||
|
|
||||||
import hasOwnProperty from 'shared/hasOwnProperty';
|
import hasOwnProperty from 'shared/hasOwnProperty';
|
||||||
import isArray from 'shared/isArray';
|
import isArray from 'shared/isArray';
|
||||||
|
@ -39,7 +40,7 @@ export type {
|
||||||
} from 'ReactFlightDOMRelayServerIntegration';
|
} from 'ReactFlightDOMRelayServerIntegration';
|
||||||
|
|
||||||
export function isModuleReference(reference: Object): boolean {
|
export function isModuleReference(reference: Object): boolean {
|
||||||
return reference instanceof JSResourceReference;
|
return reference instanceof JSResourceReferenceImpl;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type ModuleKey = ModuleReference<any>;
|
export type ModuleKey = ModuleReference<any>;
|
||||||
|
|
|
@ -7,13 +7,13 @@
|
||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
class JSResourceReference {
|
class JSResourceReferenceImpl {
|
||||||
constructor(exportedValue) {
|
constructor(moduleId) {
|
||||||
this._moduleId = exportedValue;
|
this._moduleId = moduleId;
|
||||||
}
|
}
|
||||||
getModuleId() {
|
getModuleId() {
|
||||||
return this._moduleId;
|
return this._moduleId;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = JSResourceReference;
|
module.exports = JSResourceReferenceImpl;
|
|
@ -7,11 +7,11 @@
|
||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
import JSResourceReference from 'JSResourceReference';
|
import JSResourceReferenceImpl from 'JSResourceReferenceImpl';
|
||||||
|
|
||||||
const ReactFlightDOMRelayClientIntegration = {
|
const ReactFlightDOMRelayClientIntegration = {
|
||||||
resolveModuleReference(moduleData) {
|
resolveModuleReference(moduleData) {
|
||||||
return new JSResourceReference(moduleData);
|
return new JSResourceReferenceImpl(moduleData);
|
||||||
},
|
},
|
||||||
preloadModule(moduleReference) {},
|
preloadModule(moduleReference) {},
|
||||||
requireModule(moduleReference) {
|
requireModule(moduleReference) {
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
let act;
|
let act;
|
||||||
let React;
|
let React;
|
||||||
let ReactDOMClient;
|
let ReactDOMClient;
|
||||||
let JSResourceReference;
|
let JSResourceReferenceImpl;
|
||||||
let ReactDOMFlightRelayServer;
|
let ReactDOMFlightRelayServer;
|
||||||
let ReactDOMFlightRelayClient;
|
let ReactDOMFlightRelayClient;
|
||||||
let SuspenseList;
|
let SuspenseList;
|
||||||
|
@ -24,7 +24,7 @@ describe('ReactFlightDOMRelay', () => {
|
||||||
ReactDOMClient = require('react-dom/client');
|
ReactDOMClient = require('react-dom/client');
|
||||||
ReactDOMFlightRelayServer = require('react-server-dom-relay/server');
|
ReactDOMFlightRelayServer = require('react-server-dom-relay/server');
|
||||||
ReactDOMFlightRelayClient = require('react-server-dom-relay');
|
ReactDOMFlightRelayClient = require('react-server-dom-relay');
|
||||||
JSResourceReference = require('JSResourceReference');
|
JSResourceReferenceImpl = require('JSResourceReferenceImpl');
|
||||||
if (gate(flags => flags.enableSuspenseList)) {
|
if (gate(flags => flags.enableSuspenseList)) {
|
||||||
SuspenseList = React.SuspenseList;
|
SuspenseList = React.SuspenseList;
|
||||||
}
|
}
|
||||||
|
@ -84,7 +84,7 @@ describe('ReactFlightDOMRelay', () => {
|
||||||
</span>
|
</span>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
const User = new JSResourceReference(UserClient);
|
const User = new JSResourceReferenceImpl(UserClient);
|
||||||
|
|
||||||
function Greeting({firstName, lastName}) {
|
function Greeting({firstName, lastName}) {
|
||||||
return <User greeting="Hello" name={firstName + ' ' + lastName} />;
|
return <User greeting="Hello" name={firstName + ' ' + lastName} />;
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
import type {JSONValue, ResponseBase} from 'react-client/src/ReactFlightClient';
|
import type {JSONValue, ResponseBase} from 'react-client/src/ReactFlightClient';
|
||||||
|
|
||||||
import type JSResourceReference from 'JSResourceReference';
|
import type {JSResourceReference} from 'JSResourceReference';
|
||||||
|
|
||||||
export type ModuleReference<T> = JSResourceReference<T>;
|
export type ModuleReference<T> = JSResourceReference<T>;
|
||||||
|
|
||||||
|
|
|
@ -11,9 +11,10 @@ import type {RowEncoding, JSONValue} from './ReactFlightNativeRelayProtocol';
|
||||||
import type {Request, ReactModel} from 'react-server/src/ReactFlightServer';
|
import type {Request, ReactModel} from 'react-server/src/ReactFlightServer';
|
||||||
import hasOwnProperty from 'shared/hasOwnProperty';
|
import hasOwnProperty from 'shared/hasOwnProperty';
|
||||||
import isArray from 'shared/isArray';
|
import isArray from 'shared/isArray';
|
||||||
|
import type {JSResourceReference} from 'JSResourceReference';
|
||||||
import JSResourceReferenceImpl from 'JSResourceReferenceImpl';
|
import JSResourceReferenceImpl from 'JSResourceReferenceImpl';
|
||||||
|
|
||||||
export type ModuleReference<T> = JSResourceReferenceImpl<T>;
|
export type ModuleReference<T> = JSResourceReference<T>;
|
||||||
|
|
||||||
import type {
|
import type {
|
||||||
Destination,
|
Destination,
|
||||||
|
|
|
@ -8,8 +8,8 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
class JSResourceReferenceImpl {
|
class JSResourceReferenceImpl {
|
||||||
constructor(exportedValue) {
|
constructor(moduleId) {
|
||||||
this._moduleId = exportedValue;
|
this._moduleId = moduleId;
|
||||||
}
|
}
|
||||||
getModuleId() {
|
getModuleId() {
|
||||||
return this._moduleId;
|
return this._moduleId;
|
||||||
|
|
|
@ -7,11 +7,11 @@
|
||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
import JSResourceReference from 'JSResourceReference';
|
import JSResourceReferenceImpl from 'JSResourceReferenceImpl';
|
||||||
|
|
||||||
const ReactFlightNativeRelayClientIntegration = {
|
const ReactFlightNativeRelayClientIntegration = {
|
||||||
resolveModuleReference(moduleData) {
|
resolveModuleReference(moduleData) {
|
||||||
return new JSResourceReference(moduleData);
|
return new JSResourceReferenceImpl(moduleData);
|
||||||
},
|
},
|
||||||
preloadModule(moduleReference) {},
|
preloadModule(moduleReference) {},
|
||||||
requireModule(moduleReference) {
|
requireModule(moduleReference) {
|
||||||
|
|
|
@ -15,24 +15,29 @@ type JSONValue =
|
||||||
| {+[key: string]: JSONValue}
|
| {+[key: string]: JSONValue}
|
||||||
| $ReadOnlyArray<JSONValue>;
|
| $ReadOnlyArray<JSONValue>;
|
||||||
|
|
||||||
declare class JSResourceReference<T> {
|
|
||||||
_moduleId: T;
|
|
||||||
getModuleId(): string;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Haste
|
|
||||||
declare module 'JSResourceReference' {
|
declare module 'JSResourceReference' {
|
||||||
declare export default typeof JSResourceReference;
|
declare export interface JSResourceReference<T> {
|
||||||
|
getModuleId(): string;
|
||||||
|
getModuleIdAsRef(): $Flow$ModuleRef<T>;
|
||||||
|
getModuleIfRequired(): ?T;
|
||||||
|
load(): Promise<T>;
|
||||||
|
preload(): void;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Metro
|
|
||||||
declare module 'JSResourceReferenceImpl' {
|
declare module 'JSResourceReferenceImpl' {
|
||||||
declare export default class JSResourceReferenceImpl<
|
declare export default class JSResourceReferenceImpl<T> {
|
||||||
T,
|
getModuleId(): string;
|
||||||
> extends JSResourceReference<T> {}
|
getModuleIdAsRef(): $Flow$ModuleRef<T>;
|
||||||
|
getModuleIfRequired(): ?T;
|
||||||
|
load(): Promise<T>;
|
||||||
|
preload(): void;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
declare module 'ReactFlightDOMRelayServerIntegration' {
|
declare module 'ReactFlightDOMRelayServerIntegration' {
|
||||||
|
import type {JSResourceReference} from 'JSResourceReference';
|
||||||
|
|
||||||
declare export opaque type Destination;
|
declare export opaque type Destination;
|
||||||
declare export opaque type BundlerConfig;
|
declare export opaque type BundlerConfig;
|
||||||
declare export function emitRow(
|
declare export function emitRow(
|
||||||
|
@ -49,6 +54,8 @@ declare module 'ReactFlightDOMRelayServerIntegration' {
|
||||||
}
|
}
|
||||||
|
|
||||||
declare module 'ReactFlightDOMRelayClientIntegration' {
|
declare module 'ReactFlightDOMRelayClientIntegration' {
|
||||||
|
import type {JSResourceReference} from 'JSResourceReference';
|
||||||
|
|
||||||
declare export opaque type ModuleMetaData;
|
declare export opaque type ModuleMetaData;
|
||||||
declare export function resolveModuleReference<T>(
|
declare export function resolveModuleReference<T>(
|
||||||
moduleData: ModuleMetaData,
|
moduleData: ModuleMetaData,
|
||||||
|
@ -62,6 +69,8 @@ declare module 'ReactFlightDOMRelayClientIntegration' {
|
||||||
}
|
}
|
||||||
|
|
||||||
declare module 'ReactFlightNativeRelayServerIntegration' {
|
declare module 'ReactFlightNativeRelayServerIntegration' {
|
||||||
|
import type {JSResourceReference} from 'JSResourceReference';
|
||||||
|
|
||||||
declare export opaque type Destination;
|
declare export opaque type Destination;
|
||||||
declare export opaque type BundlerConfig;
|
declare export opaque type BundlerConfig;
|
||||||
declare export function emitRow(
|
declare export function emitRow(
|
||||||
|
@ -78,6 +87,8 @@ declare module 'ReactFlightNativeRelayServerIntegration' {
|
||||||
}
|
}
|
||||||
|
|
||||||
declare module 'ReactFlightNativeRelayClientIntegration' {
|
declare module 'ReactFlightNativeRelayClientIntegration' {
|
||||||
|
import type {JSResourceReference} from 'JSResourceReference';
|
||||||
|
|
||||||
declare export opaque type ModuleMetaData;
|
declare export opaque type ModuleMetaData;
|
||||||
declare export function resolveModuleReference<T>(
|
declare export function resolveModuleReference<T>(
|
||||||
moduleData: ModuleMetaData,
|
moduleData: ModuleMetaData,
|
||||||
|
|
|
@ -405,7 +405,7 @@ const bundles = [
|
||||||
externals: [
|
externals: [
|
||||||
'react',
|
'react',
|
||||||
'ReactFlightDOMRelayServerIntegration',
|
'ReactFlightDOMRelayServerIntegration',
|
||||||
'JSResourceReference',
|
'JSResourceReferenceImpl',
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -420,7 +420,7 @@ const bundles = [
|
||||||
externals: [
|
externals: [
|
||||||
'react',
|
'react',
|
||||||
'ReactFlightDOMRelayClientIntegration',
|
'ReactFlightDOMRelayClientIntegration',
|
||||||
'JSResourceReference',
|
'JSResourceReferenceImpl',
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -13629,7 +13629,7 @@ rc@^1.0.1, rc@^1.1.6, rc@^1.2.8:
|
||||||
prop-types "^15.6.2"
|
prop-types "^15.6.2"
|
||||||
scheduler "^0.13.0"
|
scheduler "^0.13.0"
|
||||||
|
|
||||||
react-is@^16.8.1, "react-is@npm:react-is":
|
react-is@^16.8.1, react-is@^17.0.1, "react-is@npm:react-is":
|
||||||
version "17.0.2"
|
version "17.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
|
resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
|
||||||
integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
|
integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
|
||||||
|
|
Loading…
Reference in New Issue