UNPKG

@vaadin/hilla-models

Version:

Generative form models for Hilla

44 lines 1.79 kB
import { $assertSupportedModel, $constraints, $name, $optional, } from './Model.js'; import { CoreModelBuilder } from './modelBuilders.js'; import { $itemModel, ArrayModel } from './models.js'; function createModelConverter(modelConverterFn) { return ((modelOrConverter, ...extraArgs) => { if (typeof modelOrConverter === 'function') { return (model) => modelConverterFn(modelOrConverter(model), ...extraArgs); } return modelConverterFn(modelOrConverter, ...extraArgs); }); } function selfImpl(model) { return model; } const _self = selfImpl; export { _self as self }; function optionalImpl(model) { return new CoreModelBuilder(model).name(model[$name]).define($optional, { value: true }).build(); } export const optional = createModelConverter(optionalImpl); function arrayImpl(model) { return new CoreModelBuilder(ArrayModel, () => []) .name(`Array<${model[$name]}>`) .define($itemModel, { value: model }) .build(); } export const array = createModelConverter(arrayImpl); function constrainedImpl(model, constraint, ...moreConstraints) { const previousConstraints = model[$constraints]; const newConstraints = [constraint, ...moreConstraints]; for (const newConstraint of newConstraints) { newConstraint[$assertSupportedModel](model); } return new CoreModelBuilder(model) .name(model[$name]) .define($constraints, { value: [...previousConstraints, ...newConstraints] }) .build(); } export const constrained = createModelConverter(constrainedImpl); function metaImpl(model, metadata) { return new CoreModelBuilder(model).name(model[$name]).meta(metadata).build(); } export const meta = createModelConverter(metaImpl); //# sourceMappingURL=converters.js.map