// @effect-diagnostics asyncFunction:off extendsNativeError:off globalTimers:off newPromise:off strictBooleanExpressions:off import { backendFederationMetadata as sharedBackendFederationMetadata, backendFederationVersionBoundary as sharedBackendFederationVersionBoundary, } from '@modern-js/backend-federation-contracts'; import type { BackendFederationManifest } from './types'; export function stringValue(value: unknown) { return typeof value === 'string' && value.length > 0 ? value : undefined; } export function isRecord(value: unknown): value is Record { return typeof value === 'object' && value !== null; } export function recordField( value: Record | undefined, field: string, ) { const fieldValue = value?.[field]; return isRecord(fieldValue) ? fieldValue : undefined; } export function resolveRemoteEntryFromMetadata( manifest: BackendFederationManifest, ) { const metaData = recordField(manifest, 'metaData'); const remoteEntry = recordField(metaData, 'remoteEntry'); const publicPath = stringValue(metaData?.publicPath) ?? stringValue(metaData?.ssrPublicPath); const entryName = stringValue(remoteEntry?.name); if (!publicPath || !entryName) { return undefined; } const entryPath = stringValue(remoteEntry?.path) ?? ''; const normalizedBase = publicPath.replace(/\/+$/u, ''); const normalizedPath = entryPath.replace(/^\/+|\/+$/gu, ''); return [normalizedBase, normalizedPath, entryName].filter(Boolean).join('/'); } export function backendFederationMetadata(manifest: BackendFederationManifest) { return sharedBackendFederationMetadata(manifest); } export function versionBoundaryMetadata(manifest: BackendFederationManifest) { return sharedBackendFederationVersionBoundary(manifest); } export function deliveryUnitMetadata( record: Record | undefined, ) { return recordField(record, 'deliveryUnit'); } export function manifestDeliveryUnit( backendFederation: Record | undefined, boundary: Record | undefined, ) { return { boundary: deliveryUnitMetadata(boundary), top: deliveryUnitMetadata(backendFederation), }; }