@beignet/core
Version:
Core framework primitives for Beignet
40 lines • 2.32 kB
TypeScript
import type { HttpContractConfig } from "./types.js";
/**
* Lifecycle metadata for an HTTP contract that external clients should stop
* using.
*/
export type ContractDeprecationMeta = {
/** UTC ISO 8601 timestamp when the contract became deprecated. */
since: string;
/** Optional human-readable explanation. */
reason?: string;
/** UTC ISO 8601 timestamp after which the contract may stop being served. */
sunset?: string;
/** URI reference for the preferred replacement operation. */
replacement?: string;
/** Absolute HTTP(S) URL with migration or deprecation documentation. */
documentation?: string;
};
/** Stable code identifying invalid lifecycle or operation metadata. */
export type ContractLifecycleFindingCode = "INVALID_DEPRECATION_SINCE" | "INVALID_DEPRECATION_SUNSET" | "DEPRECATION_SUNSET_BEFORE_SINCE" | "INVALID_DEPRECATION_REASON" | "INVALID_DEPRECATION_REPLACEMENT" | "INVALID_DEPRECATION_DOCUMENTATION" | "INVALID_OPERATION_ID";
/** Error raised when contract lifecycle metadata is malformed. */
export declare class ContractLifecycleError extends Error {
/** Stable machine-readable finding code. */
readonly code: ContractLifecycleFindingCode;
/** Name of the invalid contract, or the group label during group setup. */
readonly contract: string;
constructor(args: {
code: ContractLifecycleFindingCode;
contract: string;
message: string;
});
}
/** Validate deprecation metadata supplied by builders or raw contract configs. */
export declare function assertValidContractDeprecation(deprecation: unknown, contract: string): asserts deprecation is ContractDeprecationMeta;
/** Return and validate the operation ID used by OpenAPI and route registries. */
export declare function getContractOperationId(contract: Pick<HttpContractConfig, "name" | "metadata">): string;
/** Validate lifecycle metadata on a complete contract definition. */
export declare function assertValidContractLifecycle(contract: Pick<HttpContractConfig, "name" | "metadata">): void;
/** Build standards-based HTTP response headers for a deprecated contract. */
export declare function contractLifecycleResponseHeaders(contract: Pick<HttpContractConfig, "name" | "metadata">): Record<string, string>;
//# sourceMappingURL=lifecycle.d.ts.map