UNPKG

lodash-fantasy

Version:

Fantasy Land compatible types built with lodash.

1,852 lines (799 loc) 108 kB
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Lodash Fantasy</title> <meta name="description" content="Fantasy Land compatible types built with lodash." /> <meta property="og:title" content=""/> <meta property="og:type" content="website"/> <meta property="og:image" content=""/> <meta property="og:url" content=""/> <script src="scripts/prettify/prettify.js"></script> <script src="scripts/prettify/lang-css.js"></script> <script src="scripts/jquery.min.js"></script> <!--[if lt IE 9]> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css"> <link type="text/css" rel="stylesheet" href="styles/bootstrap.min.css"> <link type="text/css" rel="stylesheet" href="styles/jaguar.css"> <script> var config = {"monospaceLinks":true,"cleverLinks":false,"applicationName":"lodash-fantasy","collapseSymbols":false,"default":{"outputSourceFiles":true},"linenums":true,"meta":{"description":"Fantasy Land compatible types built with lodash.","title":"Lodash Fantasy"},"openGraph":{"type":"website"}}; </script> </head> <body> <div id="wrap" class="clearfix"> <div class="navigation"> <h3 class="applicationName"><a href="index.html">lodash-fantasy</a></h3> <div class="search"> <input id="search" type="text" class="form-control input-sm" placeholder="Search Documentations"> </div> <ul class="list"> <li class="item" data-name="Either"> <span class="title"> <a href="Either.html">Either</a> </span> <ul class="members itemMembers"> <span class="subtitle">Members</span> <li data-name="Either.all"><a href="Either.html#.all">all</a></li> <li data-name="Either.any"><a href="Either.html#.any">any</a></li> <li data-name="Either.each"><a href="Either.html#.each">each</a></li> <li data-name="Either.equals"><a href="Either.html#.equals">equals</a></li> <li data-name="Either.filter"><a href="Either.html#.filter">filter</a></li> <li data-name="Either.from"><a href="Either.html#.from">from</a></li> <li data-name="Either.isEither"><a href="Either.html#.isEither">isEither</a></li> <li data-name="Either.isLeft"><a href="Either.html#.isLeft">isLeft</a></li> <li data-name="Either.isRight"><a href="Either.html#.isRight">isRight</a></li> <li data-name="Either.Left"><a href="Either.html#.Left">Left</a></li> <li data-name="Either.map"><a href="Either.html#.map">map</a></li> <li data-name="Either.mapIn"><a href="Either.html#.mapIn">mapIn</a></li> <li data-name="Either.of"><a href="Either.html#.of">of</a></li> <li data-name="Either.reduce"><a href="Either.html#.reduce">reduce</a></li> <li data-name="Either.Right"><a href="Either.html#.Right">Right</a></li> <li data-name="Either.toMaybe"><a href="Either.html#.toMaybe">toMaybe</a></li> <li data-name="Either.toPromise"><a href="Either.html#.toPromise">toPromise</a></li> <li data-name="Either.toValidation"><a href="Either.html#.toValidation">toValidation</a></li> <li data-name="Either.try"><a href="Either.html#.try">try</a></li> </ul> <ul class="typedefs itemMembers"> </ul> <ul class="methods itemMembers"> <span class="subtitle">Methods</span> <li data-name="Either#ap"><a href="Either.html#ap">ap</a></li> <li data-name="Either#bimap"><a href="Either.html#bimap">bimap</a></li> <li data-name="Either#chain"><a href="Either.html#chain">chain</a></li> <li data-name="Either#equals"><a href="Either.html#equals">equals</a></li> <li data-name="Either#extend"><a href="Either.html#extend">extend</a></li> <li data-name="Either#get"><a href="Either.html#get">get</a></li> <li data-name="Either#ifLeft"><a href="Either.html#ifLeft">ifLeft</a></li> <li data-name="Either#ifRight"><a href="Either.html#ifRight">ifRight</a></li> <li data-name="Either#isLeft"><a href="Either.html#isLeft">isLeft</a></li> <li data-name="Either#isRight"><a href="Either.html#isRight">isRight</a></li> <li data-name="Either#map"><a href="Either.html#map">map</a></li> <li data-name="Either#of"><a href="Either.html#of">of</a></li> <li data-name="Either#orElse"><a href="Either.html#orElse">orElse</a></li> <li data-name="Either#orElseGet"><a href="Either.html#orElseGet">orElseGet</a></li> <li data-name="Either#orElseThrow"><a href="Either.html#orElseThrow">orElseThrow</a></li> <li data-name="Either#toMaybe"><a href="Either.html#toMaybe">toMaybe</a></li> <li data-name="Either#toPromise"><a href="Either.html#toPromise">toPromise</a></li> <li data-name="Either#toString"><a href="Either.html#toString">toString</a></li> <li data-name="Either#toValidation"><a href="Either.html#toValidation">toValidation</a></li> </ul> <ul class="events itemMembers"> </ul> </li> <li class="item" data-name="Failure"> <span class="title"> <a href="Failure.html">Failure</a> </span> <ul class="members itemMembers"> </ul> <ul class="typedefs itemMembers"> </ul> <ul class="methods itemMembers"> <span class="subtitle">Methods</span> <li data-name="Failure.from"><a href="Failure.html#.from">from</a></li> <li data-name="Failure#ap"><a href="Failure.html#ap">ap</a></li> <li data-name="Failure#bimap"><a href="Failure.html#bimap">bimap</a></li> <li data-name="Failure#chain"><a href="Failure.html#chain">chain</a></li> <li data-name="Failure#concat"><a href="Failure.html#concat">concat</a></li> <li data-name="Failure#equals"><a href="Failure.html#equals">equals</a></li> <li data-name="Failure#extend"><a href="Failure.html#extend">extend</a></li> <li data-name="Failure#ifFailure"><a href="Failure.html#ifFailure">ifFailure</a></li> <li data-name="Failure#ifSuccess"><a href="Failure.html#ifSuccess">ifSuccess</a></li> <li data-name="Failure#isFailure"><a href="Failure.html#isFailure">isFailure</a></li> <li data-name="Failure#isSuccess"><a href="Failure.html#isSuccess">isSuccess</a></li> <li data-name="Failure#map"><a href="Failure.html#map">map</a></li> <li data-name="Failure#of"><a href="Failure.html#of">of</a></li> <li data-name="Failure#orElse"><a href="Failure.html#orElse">orElse</a></li> <li data-name="Failure#orElseGet"><a href="Failure.html#orElseGet">orElseGet</a></li> <li data-name="Failure#orElseThrow"><a href="Failure.html#orElseThrow">orElseThrow</a></li> <li data-name="Failure#toEither"><a href="Failure.html#toEither">toEither</a></li> <li data-name="Failure#toMaybe"><a href="Failure.html#toMaybe">toMaybe</a></li> <li data-name="Failure#toPromise"><a href="Failure.html#toPromise">toPromise</a></li> <li data-name="Failure#toString"><a href="Failure.html#toString">toString</a></li> </ul> <ul class="events itemMembers"> </ul> </li> <li class="item" data-name="Just"> <span class="title"> <a href="Just.html">Just</a> </span> <ul class="members itemMembers"> </ul> <ul class="typedefs itemMembers"> </ul> <ul class="methods itemMembers"> <span class="subtitle">Methods</span> <li data-name="Just.from"><a href="Just.html#.from">from</a></li> <li data-name="Just#ap"><a href="Just.html#ap">ap</a></li> <li data-name="Just#chain"><a href="Just.html#chain">chain</a></li> <li data-name="Just#equals"><a href="Just.html#equals">equals</a></li> <li data-name="Just#extend"><a href="Just.html#extend">extend</a></li> <li data-name="Just#get"><a href="Just.html#get">get</a></li> <li data-name="Just#ifJust"><a href="Just.html#ifJust">ifJust</a></li> <li data-name="Just#ifNothing"><a href="Just.html#ifNothing">ifNothing</a></li> <li data-name="Just#isJust"><a href="Just.html#isJust">isJust</a></li> <li data-name="Just#isNothing"><a href="Just.html#isNothing">isNothing</a></li> <li data-name="Just#map"><a href="Just.html#map">map</a></li> <li data-name="Just#of"><a href="Just.html#of">of</a></li> <li data-name="Just#orElse"><a href="Just.html#orElse">orElse</a></li> <li data-name="Just#orElseGet"><a href="Just.html#orElseGet">orElseGet</a></li> <li data-name="Just#orElseThrow"><a href="Just.html#orElseThrow">orElseThrow</a></li> <li data-name="Just#toEither"><a href="Just.html#toEither">toEither</a></li> <li data-name="Just#toPromise"><a href="Just.html#toPromise">toPromise</a></li> <li data-name="Just#toString"><a href="Just.html#toString">toString</a></li> <li data-name="Just#toValidation"><a href="Just.html#toValidation">toValidation</a></li> </ul> <ul class="events itemMembers"> </ul> </li> <li class="item" data-name="Left"> <span class="title"> <a href="Left.html">Left</a> </span> <ul class="members itemMembers"> </ul> <ul class="typedefs itemMembers"> </ul> <ul class="methods itemMembers"> <span class="subtitle">Methods</span> <li data-name="Left.from"><a href="Left.html#.from">from</a></li> <li data-name="Left#ap"><a href="Left.html#ap">ap</a></li> <li data-name="Left#bimap"><a href="Left.html#bimap">bimap</a></li> <li data-name="Left#chain"><a href="Left.html#chain">chain</a></li> <li data-name="Left#equals"><a href="Left.html#equals">equals</a></li> <li data-name="Left#extend"><a href="Left.html#extend">extend</a></li> <li data-name="Left#get"><a href="Left.html#get">get</a></li> <li data-name="Left#ifLeft"><a href="Left.html#ifLeft">ifLeft</a></li> <li data-name="Left#ifRight"><a href="Left.html#ifRight">ifRight</a></li> <li data-name="Left#isLeft"><a href="Left.html#isLeft">isLeft</a></li> <li data-name="Left#isRight"><a href="Left.html#isRight">isRight</a></li> <li data-name="Left#map"><a href="Left.html#map">map</a></li> <li data-name="Left#of"><a href="Left.html#of">of</a></li> <li data-name="Left#orElse"><a href="Left.html#orElse">orElse</a></li> <li data-name="Left#orElseGet"><a href="Left.html#orElseGet">orElseGet</a></li> <li data-name="Left#orElseThrow"><a href="Left.html#orElseThrow">orElseThrow</a></li> <li data-name="Left#toMaybe"><a href="Left.html#toMaybe">toMaybe</a></li> <li data-name="Left#toPromise"><a href="Left.html#toPromise">toPromise</a></li> <li data-name="Left#toString"><a href="Left.html#toString">toString</a></li> <li data-name="Left#toValidation"><a href="Left.html#toValidation">toValidation</a></li> </ul> <ul class="events itemMembers"> </ul> </li> <li class="item" data-name="Maybe"> <span class="title"> <a href="Maybe.html">Maybe</a> </span> <ul class="members itemMembers"> <span class="subtitle">Members</span> <li data-name="Maybe.all"><a href="Maybe.html#.all">all</a></li> <li data-name="Maybe.any"><a href="Maybe.html#.any">any</a></li> <li data-name="Maybe.each"><a href="Maybe.html#.each">each</a></li> <li data-name="Maybe.equals"><a href="Maybe.html#.equals">equals</a></li> <li data-name="Maybe.filter"><a href="Maybe.html#.filter">filter</a></li> <li data-name="Maybe.from"><a href="Maybe.html#.from">from</a></li> <li data-name="Maybe.isJust"><a href="Maybe.html#.isJust">isJust</a></li> <li data-name="Maybe.isMaybe"><a href="Maybe.html#.isMaybe">isMaybe</a></li> <li data-name="Maybe.isNothing"><a href="Maybe.html#.isNothing">isNothing</a></li> <li data-name="Maybe.Just"><a href="Maybe.html#.Just">Just</a></li> <li data-name="Maybe.map"><a href="Maybe.html#.map">map</a></li> <li data-name="Maybe.mapIn"><a href="Maybe.html#.mapIn">mapIn</a></li> <li data-name="Maybe.Nothing"><a href="Maybe.html#.Nothing">Nothing</a></li> <li data-name="Maybe.of"><a href="Maybe.html#.of">of</a></li> <li data-name="Maybe.ofNullable"><a href="Maybe.html#.ofNullable">ofNullable</a></li> <li data-name="Maybe.reduce"><a href="Maybe.html#.reduce">reduce</a></li> <li data-name="Maybe.toEither"><a href="Maybe.html#.toEither">toEither</a></li> <li data-name="Maybe.toPromise"><a href="Maybe.html#.toPromise">toPromise</a></li> <li data-name="Maybe.toValidation"><a href="Maybe.html#.toValidation">toValidation</a></li> <li data-name="Maybe.try"><a href="Maybe.html#.try">try</a></li> </ul> <ul class="typedefs itemMembers"> </ul> <ul class="methods itemMembers"> <span class="subtitle">Methods</span> <li data-name="Maybe#ap"><a href="Maybe.html#ap">ap</a></li> <li data-name="Maybe#chain"><a href="Maybe.html#chain">chain</a></li> <li data-name="Maybe#equals"><a href="Maybe.html#equals">equals</a></li> <li data-name="Maybe#extend"><a href="Maybe.html#extend">extend</a></li> <li data-name="Maybe#get"><a href="Maybe.html#get">get</a></li> <li data-name="Maybe#ifJust"><a href="Maybe.html#ifJust">ifJust</a></li> <li data-name="Maybe#ifNothing"><a href="Maybe.html#ifNothing">ifNothing</a></li> <li data-name="Maybe#isJust"><a href="Maybe.html#isJust">isJust</a></li> <li data-name="Maybe#isNothing"><a href="Maybe.html#isNothing">isNothing</a></li> <li data-name="Maybe#map"><a href="Maybe.html#map">map</a></li> <li data-name="Maybe#of"><a href="Maybe.html#of">of</a></li> <li data-name="Maybe#orElse"><a href="Maybe.html#orElse">orElse</a></li> <li data-name="Maybe#orElseGet"><a href="Maybe.html#orElseGet">orElseGet</a></li> <li data-name="Maybe#orElseThrow"><a href="Maybe.html#orElseThrow">orElseThrow</a></li> <li data-name="Maybe#toEither"><a href="Maybe.html#toEither">toEither</a></li> <li data-name="Maybe#toPromise"><a href="Maybe.html#toPromise">toPromise</a></li> <li data-name="Maybe#toString"><a href="Maybe.html#toString">toString</a></li> <li data-name="Maybe#toValidation"><a href="Maybe.html#toValidation">toValidation</a></li> </ul> <ul class="events itemMembers"> </ul> </li> <li class="item" data-name="Nothing"> <span class="title"> <a href="Nothing.html">Nothing</a> </span> <ul class="members itemMembers"> </ul> <ul class="typedefs itemMembers"> </ul> <ul class="methods itemMembers"> <span class="subtitle">Methods</span> <li data-name="Nothing.from"><a href="Nothing.html#.from">from</a></li> <li data-name="Nothing#ap"><a href="Nothing.html#ap">ap</a></li> <li data-name="Nothing#chain"><a href="Nothing.html#chain">chain</a></li> <li data-name="Nothing#equals"><a href="Nothing.html#equals">equals</a></li> <li data-name="Nothing#extend"><a href="Nothing.html#extend">extend</a></li> <li data-name="Nothing#get"><a href="Nothing.html#get">get</a></li> <li data-name="Nothing#ifJust"><a href="Nothing.html#ifJust">ifJust</a></li> <li data-name="Nothing#ifNothing"><a href="Nothing.html#ifNothing">ifNothing</a></li> <li data-name="Nothing#isJust"><a href="Nothing.html#isJust">isJust</a></li> <li data-name="Nothing#isNothing"><a href="Nothing.html#isNothing">isNothing</a></li> <li data-name="Nothing#map"><a href="Nothing.html#map">map</a></li> <li data-name="Nothing#of"><a href="Nothing.html#of">of</a></li> <li data-name="Nothing#orElse"><a href="Nothing.html#orElse">orElse</a></li> <li data-name="Nothing#orElseGet"><a href="Nothing.html#orElseGet">orElseGet</a></li> <li data-name="Nothing#orElseThrow"><a href="Nothing.html#orElseThrow">orElseThrow</a></li> <li data-name="Nothing#toEither"><a href="Nothing.html#toEither">toEither</a></li> <li data-name="Nothing#toPromise"><a href="Nothing.html#toPromise">toPromise</a></li> <li data-name="Nothing#toString"><a href="Nothing.html#toString">toString</a></li> <li data-name="Nothing#toValidation"><a href="Nothing.html#toValidation">toValidation</a></li> </ul> <ul class="events itemMembers"> </ul> </li> <li class="item" data-name="Right"> <span class="title"> <a href="Right.html">Right</a> </span> <ul class="members itemMembers"> </ul> <ul class="typedefs itemMembers"> </ul> <ul class="methods itemMembers"> <span class="subtitle">Methods</span> <li data-name="Right.from"><a href="Right.html#.from">from</a></li> <li data-name="Right#ap"><a href="Right.html#ap">ap</a></li> <li data-name="Right#bimap"><a href="Right.html#bimap">bimap</a></li> <li data-name="Right#chain"><a href="Right.html#chain">chain</a></li> <li data-name="Right#equals"><a href="Right.html#equals">equals</a></li> <li data-name="Right#extend"><a href="Right.html#extend">extend</a></li> <li data-name="Right#get"><a href="Right.html#get">get</a></li> <li data-name="Right#ifLeft"><a href="Right.html#ifLeft">ifLeft</a></li> <li data-name="Right#ifRight"><a href="Right.html#ifRight">ifRight</a></li> <li data-name="Right#isLeft"><a href="Right.html#isLeft">isLeft</a></li> <li data-name="Right#isRight"><a href="Right.html#isRight">isRight</a></li> <li data-name="Right#map"><a href="Right.html#map">map</a></li> <li data-name="Right#of"><a href="Right.html#of">of</a></li> <li data-name="Right#orElse"><a href="Right.html#orElse">orElse</a></li> <li data-name="Right#orElseGet"><a href="Right.html#orElseGet">orElseGet</a></li> <li data-name="Right#orElseThrow"><a href="Right.html#orElseThrow">orElseThrow</a></li> <li data-name="Right#toMaybe"><a href="Right.html#toMaybe">toMaybe</a></li> <li data-name="Right#toPromise"><a href="Right.html#toPromise">toPromise</a></li> <li data-name="Right#toString"><a href="Right.html#toString">toString</a></li> <li data-name="Right#toValidation"><a href="Right.html#toValidation">toValidation</a></li> </ul> <ul class="events itemMembers"> </ul> </li> <li class="item" data-name="Success"> <span class="title"> <a href="Success.html">Success</a> </span> <ul class="members itemMembers"> </ul> <ul class="typedefs itemMembers"> </ul> <ul class="methods itemMembers"> <span class="subtitle">Methods</span> <li data-name="Success.from"><a href="Success.html#.from">from</a></li> <li data-name="Success#ap"><a href="Success.html#ap">ap</a></li> <li data-name="Success#bimap"><a href="Success.html#bimap">bimap</a></li> <li data-name="Success#chain"><a href="Success.html#chain">chain</a></li> <li data-name="Success#concat"><a href="Success.html#concat">concat</a></li> <li data-name="Success#equals"><a href="Success.html#equals">equals</a></li> <li data-name="Success#extend"><a href="Success.html#extend">extend</a></li> <li data-name="Success#ifFailure"><a href="Success.html#ifFailure">ifFailure</a></li> <li data-name="Success#ifSuccess"><a href="Success.html#ifSuccess">ifSuccess</a></li> <li data-name="Success#isFailure"><a href="Success.html#isFailure">isFailure</a></li> <li data-name="Success#isSuccess"><a href="Success.html#isSuccess">isSuccess</a></li> <li data-name="Success#map"><a href="Success.html#map">map</a></li> <li data-name="Success#of"><a href="Success.html#of">of</a></li> <li data-name="Success#orElse"><a href="Success.html#orElse">orElse</a></li> <li data-name="Success#orElseGet"><a href="Success.html#orElseGet">orElseGet</a></li> <li data-name="Success#orElseThrow"><a href="Success.html#orElseThrow">orElseThrow</a></li> <li data-name="Success#toEither"><a href="Success.html#toEither">toEither</a></li> <li data-name="Success#toMaybe"><a href="Success.html#toMaybe">toMaybe</a></li> <li data-name="Success#toPromise"><a href="Success.html#toPromise">toPromise</a></li> <li data-name="Success#toString"><a href="Success.html#toString">toString</a></li> </ul> <ul class="events itemMembers"> </ul> </li> <li class="item" data-name="Validation"> <span class="title"> <a href="Validation.html">Validation</a> </span> <ul class="members itemMembers"> <span class="subtitle">Members</span> <li data-name="Validation.all"><a href="Validation.html#.all">all</a></li> <li data-name="Validation.any"><a href="Validation.html#.any">any</a></li> <li data-name="Validation.concat"><a href="Validation.html#.concat">concat</a></li> <li data-name="Validation.each"><a href="Validation.html#.each">each</a></li> <li data-name="Validation.empty"><a href="Validation.html#.empty">empty</a></li> <li data-name="Validation.equals"><a href="Validation.html#.equals">equals</a></li> <li data-name="Validation.Failure"><a href="Validation.html#.Failure">Failure</a></li> <li data-name="Validation.filter"><a href="Validation.html#.filter">filter</a></li> <li data-name="Validation.from"><a href="Validation.html#.from">from</a></li> <li data-name="Validation.isFailure"><a href="Validation.html#.isFailure">isFailure</a></li> <li data-name="Validation.isSuccess"><a href="Validation.html#.isSuccess">isSuccess</a></li> <li data-name="Validation.isValidation"><a href="Validation.html#.isValidation">isValidation</a></li> <li data-name="Validation.map"><a href="Validation.html#.map">map</a></li> <li data-name="Validation.mapIn"><a href="Validation.html#.mapIn">mapIn</a></li> <li data-name="Validation.of"><a href="Validation.html#.of">of</a></li> <li data-name="Validation.reduce"><a href="Validation.html#.reduce">reduce</a></li> <li data-name="Validation.Success"><a href="Validation.html#.Success">Success</a></li> <li data-name="Validation.toEither"><a href="Validation.html#.toEither">toEither</a></li> <li data-name="Validation.toMaybe"><a href="Validation.html#.toMaybe">toMaybe</a></li> <li data-name="Validation.toPromise"><a href="Validation.html#.toPromise">toPromise</a></li> <li data-name="Validation.try"><a href="Validation.html#.try">try</a></li> </ul> <ul class="typedefs itemMembers"> </ul> <ul class="methods itemMembers"> <span class="subtitle">Methods</span> <li data-name="Validation#ap"><a href="Validation.html#ap">ap</a></li> <li data-name="Validation#bimap"><a href="Validation.html#bimap">bimap</a></li> <li data-name="Validation#chain"><a href="Validation.html#chain">chain</a></li> <li data-name="Validation#concat"><a href="Validation.html#concat">concat</a></li> <li data-name="Validation#equals"><a href="Validation.html#equals">equals</a></li> <li data-name="Validation#extend"><a href="Validation.html#extend">extend</a></li> <li data-name="Validation#ifFailure"><a href="Validation.html#ifFailure">ifFailure</a></li> <li data-name="Validation#ifSuccess"><a href="Validation.html#ifSuccess">ifSuccess</a></li> <li data-name="Validation#isFailure"><a href="Validation.html#isFailure">isFailure</a></li> <li data-name="Validation#isSuccess"><a href="Validation.html#isSuccess">isSuccess</a></li> <li data-name="Validation#map"><a href="Validation.html#map">map</a></li> <li data-name="Validation#of"><a href="Validation.html#of">of</a></li> <li data-name="Validation#orElse"><a href="Validation.html#orElse">orElse</a></li> <li data-name="Validation#orElseGet"><a href="Validation.html#orElseGet">orElseGet</a></li> <li data-name="Validation#orElseThrow"><a href="Validation.html#orElseThrow">orElseThrow</a></li> <li data-name="Validation#toEither"><a href="Validation.html#toEither">toEither</a></li> <li data-name="Validation#toMaybe"><a href="Validation.html#toMaybe">toMaybe</a></li> <li data-name="Validation#toPromise"><a href="Validation.html#toPromise">toPromise</a></li> <li data-name="Validation#toString"><a href="Validation.html#toString">toString</a></li> </ul> <ul class="events itemMembers"> </ul> </li> </ul> </div> <div class="main"> <h1 class="page-title" data-filename="Validation.html">Class: Validation</h1> <section> <header> <h2> Validation </h2> <div class="class-description">The <a href="Validation.html"><code>Validation</code></a> type is intended for validating values and aggregating failures. It is a disjunction similar to <code>Either</code>. The key difference of the <a href="Validation.html"><code>Validation</code></a> type is the focus on failure aggregation as opposed to failing once and ignoring all other failures. Much like <code>Either</code>, <a href="Validation.html"><code>Validation</code></a> is right-biased.</div> </header> <article> <div class="container-overview"> <dt> <div class="nameContainer"> <h4 class="name" id="Validation"> new Validation<span class="signature">(value)</span><span class="glyphicon glyphicon-circle-arrow-right"></span><span class="type-signature returnType">{<a href="Validation.html">Validation</a>}</span> </h4> <div class="tag-source"> <a href="data_Validation.js.html">data/Validation.js</a>, <a href="data_Validation.js.html#line64">line 64</a> </div> </div> </dt> <dd> <table class="params"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>value</code></td> <td class="type"> <span class="param-type">*</span> </td> <td class="description last"> Value to wrap.</td> </tr> </tbody> </table> <dl class="details"> </dl> <h5>Returns:</h5> <table class="params"> <thead> <tr> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="type"> <a href="Validation.html">Validation</a> </td> <td class="description last"><a href="Validation.html"><code>Validation</code></a> wrapped <code>value</code>.</td> </tr> </tbody> </table> <h5>Examples</h5> <p class="code-caption">Via <code>new</code></p> <pre class="prettyprint"><code>const v1 = new Success(value); const v2 = new Failure(message);</code></pre> <p class="code-caption">Via function</p> <pre class="prettyprint"><code>const v3 = Success.from(value); const v4 = Failure.from(message);</code></pre> <p class="code-caption">Via validation function</p> <pre class="prettyprint"><code>const isEmpty = require("lodash/fp/isEmpty"); const isString = require("lodash/fp/isString"); const Validation = require("lodash-fantasy/data/Validation"); function validateStringPresence(value) { return isString(value) && !isEmpty(value) ? Validation.Success.from(value) : Validation.Failure.from("value should be a non-empty string"); } module.exports = validateStringPresence;</code></pre> <p class="code-caption">Via abstract validation rule</p> <pre class="prettyprint"><code>const Validation = require("lodash-fantasy/data/Validation"); module.exports = (condition, value, message) => condition(value) ? Validation.Success.from(value) : Validation.Failure.from(message(value)); // Pass value into the message for possible reference</code></pre> </dd> </div> <h3 class="subsection-title">Members</h3> <dl> <dt> <div class="nameContainer"> <h4 class="name" id=".all"><span class="type-signature static">static</span>Validation.all</h4> </div> </dt> <dd> <div class="description"> Returns a <a href="Validation.html"><code>Validation</code></a> that resolves all of the validations in the collection into a single validation. Unlike <code>Promise</code>, <a href="Validation.html#.all"><code>Validation.all</code></a> aggregates all of the failures into a single instance of <a href="Validation.html"><code>Validation</code></a>. However, like <code>Promise</code>, <a href="Validation.html#.all"><code>Validation.all</code></a> collects all of the values for successes when <em>all</em> items in the collection are a <a href="Success.html"><code>Success</code></a>. </div> <dl class="details"> </dl> <h5>Example</h5> <pre class="prettyprint"><code>const v1 = validationPropertyAIn(context1); // => Success(context1) const v2 = validationPropertyBIn(context2); // => Success(context2) const v3 = validationPropertyCIn(context3); // => Failure("A failure.") const v4 = validationPropertyDIn(context4); // => Failure("B failure.") Validation.all([v1, v2]); // => Success([context1, context2]) Validation.all([v1, v2, v3]); // => Failure(["A failure"]) Validation.all([v1, v2, v3, v4]); // => Failure(["A failure", "B failure"])</code></pre> </dd> <dt> <div class="nameContainer"> <h4 class="name" id=".any"><span class="type-signature static">static</span>Validation.any</h4> </div> </dt> <dd> <div class="description"> Returns the first <a href="Success.html"><code>Success</code></a> in the collection or a single <a href="Failure.html"><code>Failure</code></a> for all failures. </div> <dl class="details"> </dl> <h5>Example</h5> <pre class="prettyprint"><code>const v1 = validationPropertyAIn(context1); // => Success(context1) const v2 = validationPropertyBIn(context2); // => Success(context2) const v3 = validationPropertyCIn(context3); // => Failure("A failure.") const v4 = validationPropertyDIn(context4); // => Failure("B failure.") Validation.any([v1, v2]); // => Success(context1) Validation.any([v1, v2, v3]); // => Failure(["A failure"]) Validation.any([v1, v2, v3, v4]); // => Failure(["A failure", "B failure"])</code></pre> </dd> <dt> <div class="nameContainer"> <h4 class="name" id=".concat"><span class="type-signature static">static</span>Validation.concat</h4> </div> </dt> <dd> <div class="description"> Concatenates two <a href="Validation.html"><code>Validation</code></a> instances together. </div> <dl class="details"> </dl> <h5>Example</h5> <p class="code-caption">Concatenating distinct validations</p> <pre class="prettyprint"><code>const validations = [ validatePersonName(person), // => Success(person) validatePersonBirthdate(person), // => Success(person) validatePersonAddress(person), // => Failure([error1]) validatePersonEmail(person) // => Failure([error2]) ]; Validation.reduce(Validation.concat, Success.empty(), validations); // => Failure([error1, error2])</code></pre> </dd> <dt> <div class="nameContainer"> <h4 class="name" id=".each"><span class="type-signature static">static</span>Validation.each</h4> </div> </dt> <dd> <div class="description"> Iterates over a collection of validations and invokes the <code>iteratee</code> for each <a href="Validation.html"><code>Validation</code></a>. The <code>iteratee</code> is invoked with one argument: <code>(validation)</code>. Iteratee functions may exit iteration early by explicitly returning a <a href="Failure.html"><code>Failure</code></a>. </div> <dl class="details"> </dl> <h5>Example</h5> <pre class="prettyprint"><code>const validations = [ validatePerson(person1), // => Success(person1) validatePerson(person2), // => Success(person2) validatePerson(person3), // => Failure([error1, error2]) validatePerson(person4) // => Failure([error2]) ]; Validation.each(validation => validation.orElse(flow(join(", "), console.error)), validations); // => Logs 'error1, error2' then 'error2' // // => validations</code></pre> </dd> <dt> <div class="nameContainer"> <h4 class="name" id=".empty"><span class="type-signature static">static</span>Validation.empty</h4> </div> </dt> <dd> <div class="description"> Creates an empty <a href="Success.html"><code>Success</code></a>. </div> <dl class="details"> </dl> <h5>Example</h5> <pre class="prettyprint"><code>const v1 = Validation.empty(); // => Success()</code></pre> </dd> <dt> <div class="nameContainer"> <h4 class="name" id=".equals"><span class="type-signature static">static</span>Validation.equals</h4> </div> </dt> <dd> <div class="description"> Determines whether or not the <code>other</code> is equal in value to the current (<code>this</code>). This is <strong>not</strong> a reference check. </div> <dl class="details"> </dl> <h5>Examples</h5> <p class="code-caption">Reflexivity</p> <pre class="prettyprint"><code>Validation.equals(v1, v1) === true; // => true</code></pre> <p class="code-caption">Symmetry</p> <pre class="prettyprint"><code>Validation(v1, v2) === Validation.equals(v2, v1); // => true</code></pre> <p class="code-caption">Transitivity</p> <pre class="prettyprint"><code>(Validation.equals(v1, v2) === Validation.equals(v2, v3)) && Validation.equals(v1, v3) // => true</code></pre> </dd> <dt> <div class="nameContainer"> <h4 class="name" id=".Failure"><span class="type-signature static">static</span>Validation.Failure</h4> </div> </dt> <dd> <dl class="details"> <h5 class="subsection-title">Properties:</h5> <dl> <table class="props"> <thead> <tr> <th>Name</th> <th>Type</th> <th class="last">Description</th> </tr> </thead> <tbody> <tr> <td class="name"><code>Failure</code></td> <td class="type"> <span class="param-type"><a href="Failure.html">Failure</a></span> </td> <td class="description last">Validation failure.</td> </tr> </tbody> </table></dl> </dl> </dd> <dt> <div class="nameContainer"> <h4 class="name" id=".filter"><span class="type-signature static">static</span>Validation.filter</h4> </div> </dt> <dd> <div class="description"> Iterates over a collection of validations, returning an array of all validations the <code>predicate</code> for which returns truthy. The <code>predicate</code> is invoked with one argument: <code>(validation)</code>. </div> <dl class="details"> </dl> <h5>Example</h5> <p class="code-caption">Filter and log failures</p> <pre class="prettyprint"><code>const validations = [ validatePerson(person1), // => Success(person1) validatePerson(person2), // => Success(person2) validatePerson(person3), // => Failure([error1, error2]) validatePerson(person4) // => Failure([error2]) ]; // Log failures, return successes. Validation.filter(validation => validation.orElse(flow(join(", "), console.error)).isSuccess(), validations); // => Logs 'error1, error2' then 'error2' // // => [Success(person1), Success(person2)]</code></pre> </dd> <dt> <div class="nameContainer"> <h4 class="name" id=".from"><span class="type-signature static">static</span>Validation.from</h4> </div> </dt> <dd> <div class="description"> Creates a new <a href="Validation.html"><code>Validation</code></a> from a <code>value</code>. If the <code>value</code> is already a <a href="Validation.html"><code>Validation</code></a> instance, the <code>value</code> is returned unchanged. Otherwise, a new <a href="Success.html"><code>Success</code></a> is created with the <code>value</code>. </div> <dl class="details"> </dl> </dd> <dt> <div class="nameContainer"> <h4 class="name" id=".isFailure"><span class="type-signature static">static</span>Validation.isFailure</h4> </div> </dt> <dd> <div class="description"> Determines whether or not the value is a <a href="Failure.html"><code>Failure</code></a>. </div> <dl class="details"> </dl> <h5>Example</h5> <pre class="prettyprint"><code>isFailure(); // => false isFailure(null); // => false isFailure(Success.from(0)); // => false isFailure(Failure.from("Error")); // => true</code></pre> </dd> <dt> <div class="nameContainer"> <h4 class="name" id=".isSuccess"><span class="type-signature static">static</span>Validation.isSuccess</h4> </div> </dt> <dd> <div class="description"> Determines whether or not the value is a <a href="Success.html"><code>Success</code></a>. </div> <dl class="details"> </dl> <h5>Example</h5> <pre class="prettyprint"><code>isSuccess(); // => false isSuccess(null); // => false isSuccess(Success.from(0)); // => true isSuccess(Failure.from("Error")); // => false</code></pre> </dd> <dt> <div class="nameContainer"> <h4 class="name" id=".isValidation"><span class="type-signature static">static</span>Validation.isValidation</h4> </div> </dt> <dd> <div class="description"> Determines whether or not the value is a <a href="Validation.html"><code>Validation</code></a>. </div> <dl class="details"> </dl> <h5>Example</h5> <pre class="prettyprint"><code>isValidation(); // => false isValidation(null); // => false isValidation(Success.from(0)); // => true isValidation(Failure.from("Error")); // => true</code></pre> </dd> <dt> <div class="nameContainer"> <h4 class="name" id=".map"><span class="type-signature static">static</span>Validation.map</h4> </div> </dt> <dd> <div class="description"> Creates an array of values by running each <a href="Validation.html"><code>Validation</code></a> in collection through the <code>iteratee</code>. The iteratee is invoked with one argument: <code>(validation)</code>. </div> <dl class="details"> </dl> <h5>Example</h5> <p class="code-caption">Mapping all validations to promises</p> <pre class="prettyprint"><code>const validations = [ validatePrice(2.10), // => Success(price1) validatePrice(2.25), // => Success(price2) validatePrice("2.50"), // => Failure([error1]) validatePrice("Three dollars") // => Failure([error1]) ]; Validation.map(Validation.toPromise, validations); // => [Promise.resolve(price1), Promise.resolve(price2), Promise.reject([error1]), Promise.reject([error2])]</code></pre> </dd> <dt> <div class="nameContainer"> <h4 class="name" id=".mapIn"><span class="type-signature static">static</span>Validation.mapIn</h4> </div> </dt> <dd> <div class="description"> Creates an array of values by invoking <a href="Validation.html#map"><code>Validation#map</code></a> with the <code>iteratee</code> for each <a href="Validation.html"><code>Validation</code></a> in the collection. The iteratee is invoked with one argument: <code>(value)</code>. </div> <dl class="details"> </dl> <h5>Example</h5> <p class="code-caption">Mapping each Validation's value</p> <pre class="prettyprint"><code>const validations = [ validatePrice(2.10), // => Success(price1) validatePrice(2.25), // => Success(price2)