UNPKG

@bitty/maybe

Version:
77 lines (67 loc) 2.1 kB
'use strict'; var isFalsy = require('@bitty/falsy'); var isNullish = require('@bitty/nullish'); var None = { _kind: 'None', alt: function (fn) { return fn(); }, map: function () { return None; }, then: function () { return None; }, chain: function () { return None; }, isNone: function () { return true; }, isSome: function () { return false; }, match: function (_a) { var none = _a.none; return none(); }, fold: function (onLeft) { return onLeft(); }, getOrElse: function (onLeft) { return onLeft(); }, unwrap: function () { return null; }, }; function isMaybe(value) { return (value === null || value === void 0 ? void 0 : value._kind) === 'Some' || value === None; } function Some(value) { return { _kind: 'Some', alt: function () { return Some(value); }, map: function (fn) { return Some(fn(value)); }, then: function (fn) { var valueOrMaybe = fn(value); return isMaybe(valueOrMaybe) ? valueOrMaybe : Some(valueOrMaybe); }, chain: function (fn) { return fn(value); }, match: function (_a) { var some = _a.some; return some(value); }, fold: function (_, onSome) { return onSome(value); }, isNone: function () { return false; }, isSome: function () { return true; }, getOrElse: function () { return value; }, unwrap: function () { return value; }, }; } function fromFalsy(value) { return isFalsy(value) ? None : Some(value); } function fromNullish(value) { return isNullish(value) ? None : Some(value); } function fromPredicate(predicate) { return function (value) { return (predicate(value) ? Some(value) : None); }; } function tryCatch(fn) { try { return Some(fn()); } catch (error) { return None; } } exports.None = None; exports.Some = Some; exports.fromFalsy = fromFalsy; exports.fromNullish = fromNullish; exports.fromPredicate = fromPredicate; exports.tryCatch = tryCatch; //# sourceMappingURL=Maybe.js.map