UNPKG

@bitty/maybe

Version:
85 lines (72 loc) 2.47 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var isFalsy = require('@bitty/falsy'); var isNullish = require('@bitty/nullish'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var isFalsy__default = /*#__PURE__*/_interopDefaultLegacy(isFalsy); var isNullish__default = /*#__PURE__*/_interopDefaultLegacy(isNullish); 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) { var _a; return ((_a = value) === null || _a === void 0 ? void 0 : _a._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__default["default"](value) ? None : Some(value); } function fromNullish(value) { return isNullish__default["default"](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