@storm-stack/types
Version:
⚡ The storm-stack monorepo contains utility applications, tools, and various libraries to create modern and scalable web applications.
17 lines (16 loc) • 1.47 kB
TypeScript
import { MessageDetails, MessageType } from "./messages";
export type ValidationDetails<TMessageType extends typeof MessageType.ERROR | typeof MessageType.WARNING | typeof MessageType.INFO | typeof MessageType.HELP | typeof MessageType.SUCCESS = typeof MessageType.ERROR | typeof MessageType.WARNING | typeof MessageType.INFO | typeof MessageType.HELP | typeof MessageType.SUCCESS> = MessageDetails<TMessageType> & {
/**
* The field that the message is related to.
*
* @remarks
* If `undefined` or `null`, the message is not related to a specific field - in this case it is likely a global/form message.
*/
field?: string | null;
};
export type ErrorValidationDetails = ValidationDetails<typeof MessageType.ERROR>;
export type WarningValidationDetails = ValidationDetails<typeof MessageType.WARNING>;
export type InfoValidationDetails = ValidationDetails<typeof MessageType.INFO>;
export type HelpValidationDetails = ValidationDetails<typeof MessageType.HELP>;
export type SuccessValidationDetails = ValidationDetails<typeof MessageType.SUCCESS>;
export type InferValidationType<TMessageType extends MessageType> = TMessageType extends typeof MessageType.ERROR ? ErrorValidationDetails : TMessageType extends typeof MessageType.WARNING ? WarningValidationDetails : TMessageType extends typeof MessageType.INFO ? InfoValidationDetails : TMessageType extends typeof MessageType.SUCCESS ? SuccessValidationDetails : ValidationDetails;