adopted-ember-addons / adopted-ember-addons/ember-changeset-validations

[rfc]: Externalize schema validation

Abierto
#342 4 comentarios 0 reacciones 1 asignado Reclamado por @snewcomer Ver en GitHub
enhancement good first issue question
Lenguaje dominante
JavaScript
Estrellas
215
Forks
98
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

## RFC

One broad goal we have is to potentially deprecate the use of [ember-changeset-validations](https://github.com/poteto/ember-changeset-validations). Having both `ember-changeset` and `ember-changeset-validations` presents some confusion. If we went forward, `ember-changeset` would be the single library we would use to validate our data.

Currently, at a high level, the changeset API for validations is rather unintuitive and verbose.

e.g. ember-changeset-validations README

> This addon updates the changeset helper by taking in a validation map as a 2nd argument (instead of a validator function).

Do we need this? Here is an example of the migration.

```
import lookupValidator from 'ember-changeset-validations';

const EmployeeValidations = {
email: validateFormat({ type: 'email' }),
password: [
validateLength({ min: 8 }),
validatePasswordStrength({ minScore: 80 })
],
passwordConfirmation: validateConfirmation({ on: 'password' })
};

const changeset = new Changeset(this.model, lookupValidator(EmployeeValidations), EmployeeValidations);
```

Nominally, this could look like the following...

```
let schema = yup.object().shape({
email: yup.string().email().required(),
password: yup.string().required().min(8),
passwordConfirmation: yup.string()
.oneOf([yup.ref('password'), null], 'Passwords must match')
});

const changeset = new Changeset(this.model, schema);
```

As long as schema adhered to the interface we defined (something like `isValid` and/or `validate` methods), then we can detect errors in the current in progress changeset and error appropriately.

https://github.com/jquense/yup

### Upsides
- Less confusion in the changeset ecosystem
- Simpler API

### Downsides
- New API to learn.
- Another library to optionally install that supersedes our relatively simple validations provided - https://github.com/poteto/ember-changeset-validations/tree/master/addon/validators

ref https://github.com/validated-changeset/validated-changeset/issues/166

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.