@vaadin/hilla-models
Version:
Generative form models for Hilla
32 lines (31 loc) • 1.61 kB
TypeScript
import { type $defaultValue, type $members, type AnyObject, type Enum, type Extensions, type TargetModel, Model, type ModelConverter, type Value } from './Model.js';
export type PrimitiveModel<V = unknown> = Model<V>;
export declare const PrimitiveModel: Model<unknown>;
export type StringModel = PrimitiveModel<string>;
export declare const StringModel: Model<string>;
export type NumberModel = PrimitiveModel<number>;
export declare const NumberModel: Model<number>;
export type BooleanModel = PrimitiveModel<boolean>;
export declare const BooleanModel: Model<boolean>;
export declare const $itemModel: unique symbol;
export type ArrayModel<M extends Model = Model> = Model<Array<Value<M>>, {
readonly [$itemModel]: M;
}>;
export declare const ArrayModel: ArrayModel;
export type ObjectModel<V, EX extends AnyObject = AnyObject> = Model<V, {
readonly [K in keyof EX]: EX[K] extends ModelConverter ? TargetModel<EX[K], ObjectModel<V, EX>> : EX[K];
}>;
export declare const ObjectModel: Model<Readonly<Record<never, never>>>;
export type RecordModel<K extends string, V> = Model<Record<K, V>>;
export declare const RecordModel: Model<Record<string, unknown>>;
export declare const $enum: unique symbol;
export type EnumModel<T extends typeof Enum> = Model<T[keyof T], {
readonly [$enum]: T;
}>;
export declare const EnumModel: EnumModel<typeof Enum>;
export type UnionModel<MM extends Model[]> = Model<Value<MM[number]>, {
readonly [$members]: MM;
}>;
export type OptionalModel<M extends Model> = Model<M[typeof $defaultValue] | undefined, Extensions<M> & {
readonly $optional: true;
}>;