rx-form
TypeScript icon, indicating that this package has built-in type declarations

2.0.21 • Public • Published

rx-form

Библиотека для создания валидируемых моделей и форм на базе json схем.

Установка

npm install rx-form --save

Обзор

Rx-form позоляет описывать модели данных любой сложности и вложенности. Используя модель можно фильтровать и валидировать данные, приходящие в бэкенд, а также создавать формы и с их помощью строить пользовательские интерфейсы на стороне клиента.

Применение

Обработка и проверка данных при регистрации пользователя

import { Model, types, validators } from 'rx-form';

const model = Model.object({
  username: types.string({
    filter: (value) => value.trim(),
    validator: [
      validators.presence(),
      validators.string({
        minLength: 3,
      }),
    ],
  }),
  email: types.string({
    filter: [
      (value) => value.trim(),
      (value) => value.toLowerCase(),
    ],
    validator: [
      validators.presence(),
      validators.email(),
    ],
  }),
  password: types.string({
    validator: [
      validators.presence(),
      validators.string({
        pattern: /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s).*$/,
      }),
    ],
  }),
});

// valid case
model.set({
  username: ' John  ',
  email: 'JOHN@SomeMail.com',
  password: '11aaAA',
  unknownProperty: 'abc',
});
model.validate().then(() => {
  console.log('OK!');
  console.log(model.get());
});
// OK!
// { 
//   username: 'John',
//   email: 'john@somemail.com',
//   password: '11aaAA'
// }


// invalid case
model.set({
  username: ' John  ',
  email: 'invalid email',
  password: '11aaAA',
});
model.validate().catch(() => {
  console.log('ERROR!');
  console.log(model.getFirstError().toString());
})
// ERROR!
// email - is not a valid email

License

rx-form is released under the MIT license. See the LICENSE file for license text and copyright information.

Package Sidebar

Install

npm i rx-form

Weekly Downloads

4

Version

2.0.21

License

MIT

Unpacked Size

1.98 MB

Total Files

237

Last publish

Collaborators

  • gromver