UNPKG

@beignet/core

Version:

Core framework primitives for Beignet

36 lines 1.59 kB
import { compareQueryTransportFields, formatQueryTransportMismatch, getObjectSchemaShape, } from "./schema-shape.js"; /** Assert that a plain contract config declares one transport per query. */ export function assertContractQueryTransport(contract) { if (contract.query && !contract.queryTransport) { throw new Error(`Contract "${contract.name}" declares a query schema without a query transport. Pass defineQueryTransport(...) as the second argument to .query(...).`); } if (!contract.query && contract.queryTransport) { throw new Error(`Contract "${contract.name}" declares a query transport without a query schema.`); } if (contract.query && contract.queryTransport) { const shape = getObjectSchemaShape(contract.query); if (!shape) return; const schemaKeys = Object.keys(shape); const transportKeys = Object.keys(contract.queryTransport.fields); if (!compareQueryTransportFields({ schemaKeys, transportKeys })) { throw new Error(formatQueryTransportMismatch({ contractName: contract.name, schemaKeys, transportKeys, })); } } } /** * 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(c) { const contract = ("config" in c ? c.config : c); assertContractQueryTransport(contract); return contract; } //# sourceMappingURL=contract-like.js.map