typescript-functional-extensions
Version:
A TypeScript implementation of synchronous and asynchronous Maybe and Result monads
51 lines (50 loc) • 1.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.never = void 0;
exports.isDefined = isDefined;
exports.isSome = isSome;
exports.isNone = isNone;
exports.isFunction = isFunction;
exports.isPromise = isPromise;
exports.pipeFromArray = pipeFromArray;
exports.noop = noop;
const never = () => {
throw Error('This error should be unreachable');
};
exports.never = never;
function isDefined(value) {
return value !== undefined && value !== null;
}
function isSome(value) {
return value !== undefined && value !== null;
}
function isNone(value) {
return !isDefined(value);
}
function isFunction(value) {
return typeof value === 'function';
}
function isPromise(value) {
return value instanceof Promise;
}
/**
* Sourced from https://github.com/ReactiveX/rxjs/blob/7268bd31d1cb30cf01a1a69a7b14458e15b76b58/src/internal/util/pipe.ts
* @param fns
* @returns
*/
function pipeFromArray(fns) {
if (fns.length === 0) {
return noop;
}
if (fns.length === 1) {
return fns[0];
}
return function piped(input) {
return fns.reduce((prev, fn) => fn(prev), input);
};
}
function noop(value) {
if (value) {
return value;
}
}