UNPKG

@eeue56/ts-core

Version:

Core library for TypeScript inspired by Elm

141 lines 6.79 kB
import * as Maybe from './maybe'; /* Creates an Ok value */ export function Ok(value) { return { kind: 'Ok', value: value, }; } /* Creates an Err value */ export function Err(error) { return { kind: 'Err', error: error, }; } /* If result is Ok, return the value inside it. Otherwise return the default value provided; */ export function withDefault(value, result) { switch (result.kind) { case 'Ok': return result.value; default: return value; } } /* When both error and Ok are the same value, return the inner value of whichever is contained. */ export function either(result) { switch (result.kind) { case 'Ok': return result.value; default: return result.error; } } /* Turns Ok into Just, Err into Nothing */ export function toMaybe(result) { switch (result.kind) { case 'Ok': return Maybe.Just(result.value); default: return Maybe.Nothing(); } } /* Turns Just into Ok, Nothing into Err with the default value provided. */ export function fromMaybe(error, maybe) { switch (maybe.kind) { case 'Just': return Ok(maybe.value); default: return Err(error); } } /* If result is Ok, apply a function to it and return a Ok containing the new value. Otherwise return Err. */ export function map(func, result) { switch (result.kind) { case 'Ok': return Ok(func(result.value)); default: return result; } } /* If all results are Ok, apply a function to them and return a Ok containing the new value. Otherwise return the first Err encountered. */ export function map2(func, firstResult, secondResult) { switch (firstResult.kind) { case 'Ok': switch (secondResult.kind) { case 'Ok': return Ok(func(firstResult.value, secondResult.value)); default: return secondResult; } default: return firstResult; } } /* If all results are Ok, apply a function to them and return a Ok containing the new value. Otherwise return the first Err encountered. */ export function map3(func, firstResult, secondResult, thirdResult) { switch (firstResult.kind) { case 'Ok': switch (secondResult.kind) { case 'Ok': switch (thirdResult.kind) { case 'Ok': return Ok(func(firstResult.value, secondResult.value, thirdResult.value)); default: return thirdResult; } default: return secondResult; } default: return firstResult; } } /* If result is Err, apply a function to it and return a Err containing the new value. Otherwise return Ok. */ export function mapError(func, result) { switch (result.kind) { case 'Err': return Err(func(result.error)); default: return result; } } /* If the result is Ok, apply a function that turns things into a result to it. Otherwise return Err. */ export function andThen(func, result) { switch (result.kind) { case 'Ok': return func(result.value); default: return result; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9yZXN1bHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxTQUFTLENBQUM7QUFjakM7O0VBRUU7QUFDRixNQUFNLFVBQVUsRUFBRSxDQUFlLEtBQVk7SUFDekMsT0FBTztRQUNILElBQUksRUFBRSxJQUFJO1FBQ1YsS0FBSyxFQUFFLEtBQUs7S0FDZixDQUFDO0FBQ04sQ0FBQztBQUVEOztFQUVFO0FBQ0YsTUFBTSxVQUFVLEdBQUcsQ0FBZSxLQUFZO0lBQzFDLE9BQU87UUFDSCxJQUFJLEVBQUUsS0FBSztRQUNYLEtBQUssRUFBRSxLQUFLO0tBQ2YsQ0FBQztBQUNOLENBQUM7QUFFRDs7O0VBR0U7QUFDRixNQUFNLFVBQVUsV0FBVyxDQUN2QixLQUFZLEVBQ1osTUFBNEI7SUFFNUIsUUFBUSxNQUFNLENBQUMsSUFBSSxFQUFFO1FBQ2pCLEtBQUssSUFBSTtZQUNMLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQztRQUV4QjtZQUNJLE9BQU8sS0FBSyxDQUFDO0tBQ3BCO0FBQ0wsQ0FBQztBQUVEOzs7RUFHRTtBQUNGLE1BQU0sVUFBVSxNQUFNLENBQUksTUFBb0I7SUFDMUMsUUFBUSxNQUFNLENBQUMsSUFBSSxFQUFFO1FBQ2pCLEtBQUssSUFBSTtZQUNMLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQztRQUN4QjtZQUNJLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQztLQUMzQjtBQUNMLENBQUM7QUFFRDs7RUFFRTtBQUNGLE1BQU0sVUFBVSxPQUFPLENBQ25CLE1BQTRCO0lBRTVCLFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRTtRQUNqQixLQUFLLElBQUk7WUFDTCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDO1lBQ0ksT0FBTyxLQUFLLENBQUMsT0FBTyxFQUFFLENB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