@mobily/ts-belt
Version:
🔧 Fast, modern, and practical utility library for FP in TypeScript.
519 lines (510 loc) • 11.8 kB
JavaScript
var __defProp = Object.defineProperty;
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
var __export = (target, all) => {
__markAsModule(target);
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
// src/Option/index.js
__export(exports, {
None: () => None,
Some: () => Some,
contains: () => contains,
filter: () => filter,
flatMap: () => flatMap2,
fromExecution: () => fromExecution,
fromFalsy: () => fromFalsy,
fromNullable: () => fromNullable,
fromPredicate: () => fromPredicate,
fromPromise: () => fromPromise,
getExn: () => getExn2,
getWithDefault: () => getWithDefault2,
isNone: () => isNone2,
isSome: () => isSome2,
map: () => map,
mapNullable: () => mapNullable,
mapWithDefault: () => mapWithDefault,
match: () => match,
placeholder: () => placeholder,
tap: () => tap,
toNullable: () => toNullable,
toResult: () => toResult,
toUndefined: () => toUndefined,
zip: () => zip,
zipWith: () => zipWith
});
// node_modules/rescript/lib/es6/caml_array.js
function sub(x, offset, len) {
var result = new Array(len);
var j = 0;
var i = offset;
while (j < len) {
result[j] = x[i];
j = j + 1 | 0;
i = i + 1 | 0;
}
;
return result;
}
// node_modules/rescript/lib/es6/curry.js
function app(_f, _args) {
while (true) {
var args = _args;
var f = _f;
var init_arity = f.length;
var arity = init_arity === 0 ? 1 : init_arity;
var len = args.length;
var d = arity - len | 0;
if (d === 0) {
return f.apply(null, args);
}
if (d >= 0) {
return function(f2, args2) {
return function(x) {
return app(f2, args2.concat([x]));
};
}(f, args);
}
_args = sub(args, arity, -d | 0);
_f = f.apply(null, sub(args, 0, arity));
continue;
}
;
}
function _1(o, a0) {
var arity = o.length;
if (arity === 1) {
return o(a0);
} else {
switch (arity) {
case 1:
return o(a0);
case 2:
return function(param) {
return o(a0, param);
};
case 3:
return function(param, param$1) {
return o(a0, param, param$1);
};
case 4:
return function(param, param$1, param$2) {
return o(a0, param, param$1, param$2);
};
case 5:
return function(param, param$1, param$2, param$3) {
return o(a0, param, param$1, param$2, param$3);
};
case 6:
return function(param, param$1, param$2, param$3, param$4) {
return o(a0, param, param$1, param$2, param$3, param$4);
};
case 7:
return function(param, param$1, param$2, param$3, param$4, param$5) {
return o(a0, param, param$1, param$2, param$3, param$4, param$5);
};
default:
return app(o, [a0]);
}
}
}
function __1(o) {
var arity = o.length;
if (arity === 1) {
return o;
} else {
return function(a0) {
return _1(o, a0);
};
}
}
// node_modules/rescript/lib/es6/caml_obj.js
var for_in = function(o, foo) {
for (var x in o) {
foo(x);
}
};
function caml_equal(a, b) {
if (a === b) {
return true;
}
var a_type = typeof a;
if (a_type === "string" || a_type === "number" || a_type === "boolean" || a_type === "undefined" || a === null) {
return false;
}
var b_type = typeof b;
if (a_type === "function" || b_type === "function") {
throw {
RE_EXN_ID: "Invalid_argument",
_1: "equal: functional value",
Error: new Error()
};
}
if (b_type === "number" || b_type === "undefined" || b === null) {
return false;
}
var tag_a = a.TAG | 0;
var tag_b = b.TAG | 0;
if (tag_a === 248) {
return a[1] === b[1];
}
if (tag_a === 251) {
throw {
RE_EXN_ID: "Invalid_argument",
_1: "equal: abstract value",
Error: new Error()
};
}
if (tag_a !== tag_b) {
return false;
}
var len_a = a.length | 0;
var len_b = b.length | 0;
if (len_a === len_b) {
if (Array.isArray(a)) {
var _i = 0;
while (true) {
var i = _i;
if (i === len_a) {
return true;
}
if (!caml_equal(a[i], b[i])) {
return false;
}
_i = i + 1 | 0;
continue;
}
;
} else if (a instanceof Date && b instanceof Date) {
return !(a > b || a < b);
} else {
var result = {
contents: true
};
var do_key_a = function(key) {
if (!Object.prototype.hasOwnProperty.call(b, key)) {
result.contents = false;
return;
}
};
var do_key_b = function(key) {
if (!Object.prototype.hasOwnProperty.call(a, key) || !caml_equal(b[key], a[key])) {
result.contents = false;
return;
}
};
for_in(a, do_key_a);
if (result.contents) {
for_in(b, do_key_b);
}
return result.contents;
}
} else {
return false;
}
}
// node_modules/rescript/lib/es6/caml_option.js
function some(x) {
if (x === void 0) {
return {
BS_PRIVATE_NESTED_SOME_NONE: 0
};
} else if (x !== null && x.BS_PRIVATE_NESTED_SOME_NONE !== void 0) {
return {
BS_PRIVATE_NESTED_SOME_NONE: x.BS_PRIVATE_NESTED_SOME_NONE + 1 | 0
};
} else {
return x;
}
}
function nullable_to_opt(x) {
if (x == null) {
return;
} else {
return some(x);
}
}
function valFromOption(x) {
if (!(x !== null && x.BS_PRIVATE_NESTED_SOME_NONE !== void 0)) {
return x;
}
var depth = x.BS_PRIVATE_NESTED_SOME_NONE;
if (depth === 0) {
return;
} else {
return {
BS_PRIVATE_NESTED_SOME_NONE: depth - 1 | 0
};
}
}
// node_modules/rescript/lib/es6/belt_Option.js
function getExn(x) {
if (x !== void 0) {
return valFromOption(x);
}
throw {
RE_EXN_ID: "Not_found",
Error: new Error()
};
}
function mapWithDefaultU(opt, $$default, f) {
if (opt !== void 0) {
return f(valFromOption(opt));
} else {
return $$default;
}
}
function mapU(opt, f) {
if (opt !== void 0) {
return some(f(valFromOption(opt)));
}
}
function flatMapU(opt, f) {
if (opt !== void 0) {
return f(valFromOption(opt));
}
}
function flatMap(opt, f) {
return flatMapU(opt, __1(f));
}
function getWithDefault(opt, $$default) {
if (opt !== void 0) {
return valFromOption(opt);
} else {
return $$default;
}
}
function isSome(param) {
return param !== void 0;
}
function isNone(x) {
return x === void 0;
}
// src/Option/Option.bs.js
function placeholder(param) {
}
function fromNullable(value) {
if (value == null) {
return;
} else {
return some(value);
}
}
function fromFalsy(value) {
if (value) {
return value;
}
}
function _fromPredicate(value, predicateFn) {
return flatMap(value == null ? void 0 : some(value), function(value2) {
if (predicateFn(value2)) {
return some(value2);
}
});
}
function fromPredicate() {
if (arguments.length === 1) {
const args = arguments;
return function fn(data) {
return _fromPredicate(data, args[0]);
};
}
return _fromPredicate(arguments[0], arguments[1]);
}
function fromExecution(fn) {
try {
return some(fn(void 0));
} catch (exn) {
return;
}
}
function fromPromise(promise) {
var __x = promise.then(function(value) {
return Promise.resolve(some(value));
});
return __x.catch(function(param) {
return Promise.resolve(void 0);
});
}
var _map = mapU;
function map() {
if (arguments.length === 1) {
const args = arguments;
return function fn(data) {
return _map(data, args[0]);
};
}
return _map(arguments[0], arguments[1]);
}
var _flatMap = flatMapU;
function flatMap2() {
if (arguments.length === 1) {
const args = arguments;
return function fn(data) {
return _flatMap(data, args[0]);
};
}
return _flatMap(arguments[0], arguments[1]);
}
var _mapWithDefault = mapWithDefaultU;
function mapWithDefault() {
if (arguments.length === 2) {
const args = arguments;
return function fn(data) {
return _mapWithDefault(data, args[0], args[1]);
};
}
return _mapWithDefault(arguments[0], arguments[1], arguments[2]);
}
function _mapNullable(option, mapFn) {
if (option !== void 0) {
return nullable_to_opt(mapFn(valFromOption(option)));
}
}
function mapNullable() {
if (arguments.length === 1) {
const args = arguments;
return function fn(data) {
return _mapNullable(data, args[0]);
};
}
return _mapNullable(arguments[0], arguments[1]);
}
function _filter(option, predicateFn) {
return flatMapU(option, function(value) {
if (predicateFn(value)) {
return some(value);
}
});
}
function filter() {
if (arguments.length === 1) {
const args = arguments;
return function fn(data) {
return _filter(data, args[0]);
};
}
return _filter(arguments[0], arguments[1]);
}
var _getWithDefault = getWithDefault;
function getWithDefault2() {
if (arguments.length === 1) {
const args = arguments;
return function fn(data) {
return _getWithDefault(data, args[0]);
};
}
return _getWithDefault(arguments[0], arguments[1]);
}
var getExn2 = getExn;
function toNullable(option) {
return getWithDefault(option, null);
}
function toUndefined(option) {
return getWithDefault(option, void 0);
}
function _toResult(option, errorValue) {
if (option !== void 0) {
return {
TAG: 0,
_0: valFromOption(option)
};
} else {
return {
TAG: 1,
_0: errorValue
};
}
}
function toResult() {
if (arguments.length === 1) {
const args = arguments;
return function fn(data) {
return _toResult(data, args[0]);
};
}
return _toResult(arguments[0], arguments[1]);
}
function _match(option, someFn, noneFn) {
if (option !== void 0) {
return someFn(valFromOption(option));
} else {
return noneFn(void 0);
}
}
function match() {
if (arguments.length === 2) {
const args = arguments;
return function fn(data) {
return _match(data, args[0], args[1]);
};
}
return _match(arguments[0], arguments[1], arguments[2]);
}
var isNone2 = isNone;
var isSome2 = isSome;
function _tap(option, someFn) {
if (option !== void 0) {
someFn(valFromOption(option));
return option;
} else {
return option;
}
}
function tap() {
if (arguments.length === 1) {
const args = arguments;
return function fn(data) {
return _tap(data, args[0]);
};
}
return _tap(arguments[0], arguments[1]);
}
function _contains(option, value) {
return mapWithDefaultU(option, false, function(someValue) {
return caml_equal(someValue, value);
});
}
function contains() {
if (arguments.length === 1) {
const args = arguments;
return function fn(data) {
return _contains(data, args[0]);
};
}
return _contains(arguments[0], arguments[1]);
}
function _zip(fstOption, sndOption) {
if (fstOption !== void 0 && sndOption !== void 0) {
return [
valFromOption(fstOption),
valFromOption(sndOption)
];
}
}
function zip() {
if (arguments.length === 1) {
const args = arguments;
return function fn(data) {
return _zip(data, args[0]);
};
}
return _zip(arguments[0], arguments[1]);
}
function _zipWith(fstOption, sndOption, mapFn) {
if (fstOption !== void 0 && sndOption !== void 0) {
return some(mapFn(valFromOption(fstOption), valFromOption(sndOption)));
}
}
function zipWith() {
if (arguments.length === 2) {
const args = arguments;
return function fn(data) {
return _zipWith(data, args[0], args[1]);
};
}
return _zipWith(arguments[0], arguments[1], arguments[2]);
}
// src/Option/index.js
var Some = (value) => value;
var None = void 0;