UNPKG

@beignet/core

Version:

Core framework primitives for Beignet

30 lines (26 loc) 793 B
import type { HttpContractConfig } from "./types.js"; /** * Contract input accepted by APIs that can unwrap builders. */ export type ContractLike = HttpContractConfig | { config: HttpContractConfig }; /** * Resolve a contract-like type to its plain `HttpContractConfig`. */ export type ResolveContract<T> = T extends { config: infer C } ? C extends HttpContractConfig ? C : never : T extends HttpContractConfig ? T : never; /** * Resolve a contract builder or plain config to the underlying contract config. * * @param c - The contract-like object to resolve * @returns The underlying HttpContractConfig */ export function resolveContract<T extends ContractLike>( c: T, ): ResolveContract<T> { return ("config" in c ? c.config : c) as ResolveContract<T>; }