@eeue56/ts-core
Version:
Core library for TypeScript inspired by Elm
174 lines • 8.24 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.andThen = exports.mapError = exports.map3 = exports.map2 = exports.map = exports.fromMaybe = exports.toMaybe = exports.either = exports.withDefault = exports.Err = exports.Ok = void 0;
const Maybe = __importStar(require("./maybe"));
/*
Creates an Ok value
*/
function Ok(value) {
return {
kind: 'Ok',
value: value,
};
}
exports.Ok = Ok;
/*
Creates an Err value
*/
function Err(error) {
return {
kind: 'Err',
error: error,
};
}
exports.Err = Err;
/*
If result is Ok, return the value inside it.
Otherwise return the default value provided;
*/
function withDefault(value, result) {
switch (result.kind) {
case 'Ok':
return result.value;
default:
return value;
}
}
exports.withDefault = withDefault;
/*
When both error and Ok are the same value,
return the inner value of whichever is contained.
*/
function either(result) {
switch (result.kind) {
case 'Ok':
return result.value;
default:
return result.error;
}
}
exports.either = either;
/*
Turns Ok into Just, Err into Nothing
*/
function toMaybe(result) {
switch (result.kind) {
case 'Ok':
return Maybe.Just(result.value);
default:
return Maybe.Nothing();
}
}
exports.toMaybe = toMaybe;
/*
Turns Just into Ok, Nothing into Err with the default value provided.
*/
function fromMaybe(error, maybe) {
switch (maybe.kind) {
case 'Just':
return Ok(maybe.value);
default:
return Err(error);
}
}
exports.fromMaybe = fromMaybe;
/*
If result is Ok, apply a function to it and return a Ok containing the new value.
Otherwise return Err.
*/
function map(func, result) {
switch (result.kind) {
case 'Ok':
return Ok(func(result.value));
default:
return result;
}
}
exports.map = map;
/*
If all results are Ok, apply a function to them and return a Ok containing the new value.
Otherwise return the first Err encountered.
*/
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;
}
}
exports.map2 = map2;
/*
If all results are Ok, apply a function to them and return a Ok containing the new value.
Otherwise return the first Err encountered.
*/
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;
}
}
exports.map3 = map3;
/*
If result is Err, apply a function to it and return a Err containing the new value.
Otherwise return Ok.
*/
function mapError(func, result) {
switch (result.kind) {
case 'Err':
return Err(func(result.error));
default:
return result;
}
}
exports.mapError = mapError;
/*
If the result is Ok, apply a function that turns things into a result to it.
Otherwise return Err.
*/
function andThen(func, result) {
switch (result.kind) {
case 'Ok':
return func(result.value);
default:
return result;
}
}
exports.andThen = andThen;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9yZXN1bHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQWNqQzs7RUFFRTtBQUNGLFNBQWdCLEVBQUUsQ0FBZSxLQUFZO0lBQ3pDLE9BQU87UUFDSCxJQUFJLEVBQUUsSUFBSTtRQUNWLEtBQUssRUFBRSxLQUFLO0tBQ2YsQ0FBQztBQUNOLENBQUM7QUFMRCxnQkFLQztBQUVEOztFQUVFO0FBQ0YsU0FBZ0IsR0FBRyxDQUFlLEtBQVk7SUFDMUMsT0FBTztRQUNILElBQUksRUFBRSxLQUFLO1FBQ1gsS0FBSyxFQUFFLEtBQUs7S0FDZixDQUFDO0FBQ04sQ0FBQztBQUxELGtCQUtDO0FBRUQ7OztFQUdFO0FBQ0YsU0FBZ0IsV0FBVyxDQUN2QixLQUFZLEVBQ1osTUFBNEI7SUFFNUIsUUFBUSxNQUFNLENBQUMsSUFBSSxFQUFFO1FBQ2pCLEtBQUssSUFBSTtZQUNMLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQztRQUV4QjtZQUNJLE9BQU8sS0FBSyxDQUFDO0tBQ3BCO0FBQ0wsQ0FBQztBQVhELGtDQVdDO0FBRUQ7OztFQUdFO0FBQ0YsU0FBZ0IsTUFBTSxDQUFJLE1BQW9CO0lBQzFDLFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRTtRQUNqQixLQUFLLElBQUk7WUFDTCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDeEI7WUFDSSxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUM7S0FDM0I7QUFDTCxDQUFDO0FBUEQsd0JBT0M7QUFFRDs7RUFFRTtBQUNGLFNBQWdCLE9BQU8sQ0FDbkIsTUFBNEI7SUFFNUIsUUFBUSxNQUFNLENBQUMsSUFBSSxFQUFFO1FBQ2pCLEtBQUssSUFBSTtZQUNMLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEM7WUFDSSxPQUFP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