@attrx/role-morphic-plugins
v0.2.0
Published
Role-morphic plugins for @attrx/core - cast, validate, format, convert via roles
Maintainers
Readme
@attrx/role-morphic-plugins
Plugins para integrar @attrx/role-morphic com @attrx/core.
Instalação
pnpm add @attrx/role-morphic-plugins @attrx/core @attrx/role-morphicQuick Start
import { AttrCollection } from '@attrx/core';
import { createRoleMorphPlugin } from '@attrx/role-morphic-plugins';
import { RoleMorphic, areaRole, colorRole } from '@attrx/role-morphic';
// Setup
const morph = new RoleMorphic();
morph.register('area', areaRole.toSpec());
morph.register('color', colorRole.toSpec());
// Criar collection com plugin
const attrs = new AttrCollection([
{ key: 'fazenda', type: 'number', role: 'area:hectare' },
{ key: 'cor', type: 'string', role: 'color:hex' },
]).use(createRoleMorphPlugin(morph));
// Cast
attrs.roleCast('fazenda', '1500.5'); // "1500.5" → 1500.5
// Validate
attrs.roleValidate('fazenda'); // { valid: true, errors: [] }
// Convert
attrs.roleConvert('fazenda', 'area:acre'); // 1500.5 ha → 3706.58 ac
// Format
attrs.roleFormat('fazenda'); // "3706.58 ac"Plugins
| Plugin | Métodos | Uso |
|--------|---------|-----|
| role-morph | Todos | Frontend completo |
| role-cast | roleCast, tryRoleCast | Normalização de inputs |
| role-validate | roleValidate, isRoleValid, roleValidateAll, isAllRoleValid | Validação |
| role-format | roleFormat, roleFormatAll | Apresentação |
| role-convert | roleConvert, roleConvertVariant, getRoleConvertibleVariants | Conversão de unidades |
Plugins Granulares
Para bundles menores, use apenas o que precisa:
import { createRoleCastPlugin, createRoleValidatePlugin }
from '@attrx/role-morphic-plugins';
// Backend só precisa cast + validate
const attrs = new AttrCollection([...])
.use(createRoleCastPlugin(morph))
.use(createRoleValidatePlugin(morph));API
role-morph (completo)
attrs.roleCast(key, input, setValue?) // T | null
attrs.tryRoleCast(key, input, setValue?) // Result<T>
attrs.roleValidate(key, value?) // ValidationResult
attrs.isRoleValid(key, value?) // boolean
attrs.roleValidateAll() // Map<string, ValidationResult>
attrs.isAllRoleValid() // boolean
attrs.roleConvert(key, toFullId, update?) // T
attrs.tryRoleConvert(key, toFullId, update?) // Result<T>
attrs.roleConvertVariant(key, toVariant, update?) // T
attrs.getRoleConvertibleVariants(key) // string[]
attrs.roleFormat(key, options?) // string
attrs.roleFormatAll(options?) // Map<string, string>
attrs.getMorph() // RoleMorphicArquitetura
Ver ARCHITECTURE.md para detalhes de implementação.
License
MIT
