main
js 75 lines 1.83 KB
Raw
1 /**
2 * Copyright (c) Meta Platforms, Inc. and affiliates.
3 *
4 * This source code is licensed under the MIT license found in the
5 * LICENSE file in the root directory of this source tree.
6 *
7 * @flow
8 */
9
10 import type {ReactClientValue} from 'react-server/src/ReactFlightServer';
11 import type {ImportMetadata} from '../shared/ReactFlightImportMetadata';
12
13 import type {
14 ClientReference,
15 ServerReference,
16 } from '../ReactFlightParcelReferences';
17
18 export type {ClientReference, ServerReference};
19
20 export type ClientManifest = null;
21 export type ServerReferenceId = string;
22 export type ClientReferenceMetadata = ImportMetadata;
23 export type ClientReferenceKey = string;
24
25 export {
26 isClientReference,
27 isServerReference,
28 } from '../ReactFlightParcelReferences';
29
30 export function getClientReferenceKey(
31 reference: ClientReference<any>,
32 ): ClientReferenceKey {
33 return reference.$$id + '#' + reference.$$name;
34 }
35
36 export function resolveClientReferenceMetadata<T>(
37 config: ClientManifest,
38 clientReference: ClientReference<T>,
39 ): ClientReferenceMetadata {
40 if (clientReference.$$importMap) {
41 return [
42 clientReference.$$id,
43 clientReference.$$name,
44 clientReference.$$bundles,
45 clientReference.$$importMap,
46 ];
47 }
48
49 return [
50 clientReference.$$id,
51 clientReference.$$name,
52 clientReference.$$bundles,
53 ];
54 }
55
56 export function getServerReferenceId<T>(
57 config: ClientManifest,
58 serverReference: ServerReference<T>,
59 ): ServerReferenceId {
60 return serverReference.$$id;
61 }
62
63 export function getServerReferenceBoundArguments<T>(
64 config: ClientManifest,
65 serverReference: ServerReference<T>,
66 ): null | Array<ReactClientValue> {
67 return serverReference.$$bound;
68 }
69
70 export function getServerReferenceLocation<T>(
71 config: ClientManifest,
72 serverReference: ServerReference<T>,
73 ): void | Error {
74 return serverReference.$$location;
75 }