Eskema: Validação de dados de tempo de execução ergonômica e compósável para o DART bem feito !!
Todo projeto DART tem esse arquivo – você conhece o arquivo. 🍝 Eu estive lá. Na verdade, foi isso que me levou a construir Eskema. A maioria das soluções existentes que encontrei apoiava-se na geração de código, o que significava que acabei com classes de caldeira de difícil leitura e classes gerais misteriosas. Eu queria outra coisa: uma biblioteca que era declarativa, ergonômica e não -opinada. Algo que torna óbvio o que está sendo validado e onde está acontecendo, sem borrifar espaguete na minha base de código. A Eskema começou como uma pequena biblioteca funcional há alguns anos, mas desde então cresceu: agora possui um núcleo sólido baseado em classes, o operador Sugar e uma API do construtor. Ainda é extremamente simples de estender; Adicionar um novo validador ou transformador é basicamente trivial, mas é poderoso o suficiente para cobrir a maioria das necessidades de validação do mundo real. Por que Eskema? Os principais recursos do Eskema incluem: API composta: os validadores são apenas funções de DART que assumem um valor e retornam um resultado. Você pode aninhar e combiná -los livremente (com todos (), ou () ou os operadores sobrecarregados e/|). Isso torna a lógica de validação altamente composta e fácil de raciocinar. Validadores internos ricos: fora da caixa, a Eskema tem cheques para tipos, números, strings, listas, mapas, etc. Por exemplo, ISSTRING (), ISINT (), ISEMAIL (), listEach (), listisoflength () e muito mais. As verificações de presença (isNotNull (), IsNotEmpty (), ispresent ()) e verificações de comparação (ISGT (), Islte (), ISIN (), etc.) também estão incluídas. Açúcar do operador: combine validadores com & (e) e | (Ou), e inverta com não (). Por exemplo, em vez de todos ([isString(), isNotEmpty()]), você pode simplesmente escrever $ ISSTRING & ISNOTEMPTY (). Você também pode substituir as mensagens de erro alinhadas pelo operador>, por exemplo, hasLength (5)> ‘deve ser 5 chars’. Semântica opcional vs nullável: por padrão, uma chave deve estar presente e não nulo. Use Nullable (Validator) para permitir que um campo seja nulo ou opcional (validador) para permitir que ele esteja ausente completamente. Isso ajuda a evitar a confusão comum entre “sem valor” e “valor nulo”. API do construtor: Se você preferir um estilo mais fluente e seguro, o Eskema oferece uma API do construtor. Por exemplo: final UserValidator = $ map (). Schema ({‘id’: $ string (). TRIM (). ToIntStrict (). Gt (0), ‘email’: $ String (). TRIM (). ToLowerCase (). Email (), ‘AGE’: $ String () ToIntstrict (). GTE (18). Digite o modo de saída de tela cheia de saída de tela cheia sem código – Todo o tempo de execução: o Eskema valida mapas e valores de dardo simples em tempo de execução. Sem etapas de construção, sem classes geradas. Pronto de produção: totalmente testado, documentado e com mensagens de erro sensíveis. As falhas produzem uma lista estruturada de expectativas (mensagem, caminho de campo, etc.), não apenas um bool. Functional Validation Examples Here’s a validator for a user object using the functional API: final userSchema = eskema({ ‘username’: isString() & isNotEmpty(), ‘password’: isString() & hasLength(8, 32), ‘email’: isString() & isEmail(), ‘signupDate’: optional(isDateTime()), }); Resultado final = usuárioschema.validate ({‘nome de usuário’: ‘alice’, ‘senha’: ‘secret123’, ‘email’: ‘alice@example.com’, // SignUpdate omitido está ok (opcional)}); if (! result.isValid) {print (resultado.expectations); } Digite o modo de saída do modo de tela full, cada campo mapeia para um validador. Combinamos cheques com e em vez de escrever tudo ([…]), e usado opcional (isDateTime ()) para permitir que o SignUpDate esteja ausente. O objeto de resultado possui .IsValid e. Expectações com informações detalhadas de erro. Se você precisar validar apenas um único valor: Final isNonEmntTr = Isstring () & isNotEmpty (); print (isNonemptystr.isValid (‘hello’)); // True Print (isNonemptystr.Validate (”). IsValid); // false, insira o modo de tela cheia de tela cheia de escrita de tela cheia, os validadores personalizados também são fáceis: validador iseven = validator ((valor) {resultado de retorno (isValid: valor é int && value % 2 == 0, esperado: ‘uniforme inteiro’,);}); Digite o modo de saia completa do modo de tela cheia antes do VS After Eskema Vamos ser honestos: todos nós escrevemos código de validação como este em algum momento: // antes: clássico se/else sopa bool validuser (mapa
Fonte