@xroom.app/validators2
Version:
32 lines (18 loc) • 918 B
JavaScript
const F = require('@xroom.app/data-types/lib/function')
const R = require('@xroom.app/data-types/lib/result')
// SECTION Types
// MODULE Imports
/** @typedef {import('./basic-alg').ValidatorType} ValidatorType */
/** @typedef {import('@xroom.app/data-types/lib/json').Json} Json */
/** @typedef {import('./dt-alg').ValidatorDataType<'result'>} ValidatorDataType */
/** @template P @typedef {import('./basic-alg').Validator<'result', P>} Validator */
/** @template T @typedef {import('@xroom.app/data-types/lib/option').Option<T>} Option */
// SECTION Library
/** @type {ValidatorDataType['map']} */
const map = (validator, mapper) => F.flow(validator, R.map(mapper))
/** @type {ValidatorDataType['chain']} */
const chain = (first, second) => F.flow(first, R.chain(second))
/** @type {ValidatorDataType} */
const validatorDataType = { map, chain }
// SECTION Exports
module.exports = { validatorDataType }