1import { some } from 'lodash';
9 validateMaximumPatpByteLength,
13 validateEthereumAddress,
16} from 'lib/validators';
17import { compose } from 'lib/lib';
19const buildValidator = (
27 )(value).error || (await fn(value))
31// error object has errors if some of its fields are
32// 1) an array with any defined values
33// 2) any defined values
34export const hasErrors = iter =>
35 some(iter, v => (Array.isArray(v) ? hasErrors(v) : v !== undefined));
37export const buildTicketValidator = (validators = []) =>
38 buildValidator([...validators, validateTicket, validateNotEmpty]);
39export const buildMnemonicValidator = () =>
40 buildValidator([validateMnemonic, validateNotEmpty]);
41export const buildCheckboxValidator = mustBe =>
43 validateOneOf(mustBe !== undefined ? [mustBe] : [true, false]),
45export const buildPassphraseValidator = () => buildValidator([]);
46// TODO: validate hdpath format
47export const buildHdPathValidator = () => buildValidator([validateNotEmpty]);
48export const buildPointValidator = (size = 4, validate) =>
50 [validatePoint, validateMaximumPatpByteLength(size), validateNotEmpty],
53export const buildSelectValidator = options =>
54 buildValidator([validateOneOf(options.map(option => option.value))]);
55export const buildHexValidator = length =>
57 validateHexLength(length),
61export const buildUploadValidator = () => buildValidator([validateNotEmpty]);
62export const buildAddressValidator = () =>
64 validateEthereumAddress,
65 validateHexLength(40),
69export const buildNumberValidator = (min = 0) =>
70 buildValidator([validateGreaterThan(min)]);
71export const buildEmailValidator = () =>
72 buildValidator([validateEmail, validateNotEmpty]);
74// the default form validator just returns field-level validations
75const kDefaultFormValidator = (values, errors) => errors;
76export const composeValidator = (
78 formValidator = kDefaultFormValidator
80 const names = Object.keys(fieldValidators);
82 const fieldLevelValidators = names.map(name => value =>
83 fieldValidators[name](value)
86 const fieldLevelValidator = async values => {
87 const errors = await Promise.all(
88 names.map((name, i) => fieldLevelValidators[i](values[name]))
100 return async values => {
101 const errors = await fieldLevelValidator(values);
102 return await formValidator(values, errors);
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list