/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @flow */ import type {ReactClientValue} from 'react-server/src/ReactFlightServer'; import type {ImportMetadata} from '../shared/ReactFlightImportMetadata'; import type { ClientReference, ServerReference, } from '../ReactFlightParcelReferences'; export type {ClientReference, ServerReference}; export type ClientManifest = null; export type ServerReferenceId = string; export type ClientReferenceMetadata = ImportMetadata; export type ClientReferenceKey = string; export { isClientReference, isServerReference, } from '../ReactFlightParcelReferences'; export function getClientReferenceKey( reference: ClientReference, ): ClientReferenceKey { return reference.$$id + '#' + reference.$$name; } export function resolveClientReferenceMetadata( config: ClientManifest, clientReference: ClientReference, ): ClientReferenceMetadata { if (clientReference.$$importMap) { return [ clientReference.$$id, clientReference.$$name, clientReference.$$bundles, clientReference.$$importMap, ]; } return [ clientReference.$$id, clientReference.$$name, clientReference.$$bundles, ]; } export function getServerReferenceId( config: ClientManifest, serverReference: ServerReference, ): ServerReferenceId { return serverReference.$$id; } export function getServerReferenceBoundArguments( config: ClientManifest, serverReference: ServerReference, ): null | Array { return serverReference.$$bound; } export function getServerReferenceLocation( config: ClientManifest, serverReference: ServerReference, ): void | Error { return serverReference.$$location; }