Skip to content

v4.0.0-beta.0

Pre-release
Pre-release
Compare
Choose a tag to compare
@offirgolan offirgolan released this 02 Apr 05:08
· 146 commits to main since this release

Breaking Changes

Support Latest 2 LTS Releases

As Ember is evolving, we have to be able to keep up. v3.x supported Ember versions as old
as 1.11 which not only made this addon difficult to maintain, but also added a
lot of bloat. Going forward, this addon will target and test against only the 2
latest LTS releases.

Inline Validator

This library has always supported the ability to pass in a custom validate function
to the validator but it didn't feel consistent with the rest of the API. To normalize
this, we created a new inline validator that you can pass a function to via
the validate option.

Before (3.x)

validator(function(value, options, model, attribute) {
  return value === options.username ?
         true :
         `Username must be ${options.username}`;
}, {
  username: 'offirgolan'
});

After (4.x)

validator('inline', {
  username: 'offirgolan',
  validate(value, options, model, attribute) {
    return value === options.username ?
           true :
           `Username must be ${options.username}`;
  }
});

New Features

Validator Composability

Easily compose complicated validations by using this this.test to validate
against pre-existing validators.

validate(value, options, ...args) {
  let result = this.test('presence', value, { presence: true }, ...args);

  if (!result.isValid) {
    return result.message;
  }

  result = this.test('number', value, { integer: true }, ...args);

  // You can easily override the error message by returning your own.
  if (!result.isValid) {
      return 'This value must be an integer!';
    }

  // Add custom logic...

  return true;
}

Pull Requests

  • #564 Update all the things
  • #566 Validator Composability
  • #568 Partial memory leak fixes
  • #569 Inline Validator
  • #576 Ember 3.0 + Updated Tests