UNPKG

@altostra/core

Version:

Core library for shared types and logic

36 lines (35 loc) 1.35 kB
import type { AnyTypeValidation, TypeValidation } from '@altostra/type-validations'; /** * An object representing parameterized property */ export interface Parameter<T> { /** * The parameter name */ $param$: string; /** * The default value. */ defaultValue: T; /** * Specify `true` to override the value in the blueprint even if * the blueprint already has a value */ overrideDefault?: true; } /** * Returns a validators that validates if a value is parameter * @param valueValidator Validator that validates the underlying property type */ export declare function parameterOf<T>(valueValidator: AnyTypeValidation<T>): TypeValidation<Parameter<T>>; export declare const isParameter: TypeValidation<Parameter<unknown>>; export declare type ParameterizedProp<T> = Parameter<T> | T; /** * Returns a validators that validates if a value is parameter * @param valueValidator Validator that validates the underlying property type */ export declare function parameterizedPropOf<T>(valueValidator: AnyTypeValidation<T>): TypeValidation<ParameterizedProp<T>>; export declare type ParameterizedValue<T> = ParameterizedProp<T> | (T extends object ? Parameterized<T> : ParameterizedProp<T>); export declare type Parameterized<T extends object> = { [K in keyof T]: ParameterizedValue<T[K]>; };