ts-utls
Version:
Utilities for TypeScript library
38 lines • 1.89 kB
JavaScript
;
/*
* Private common functions for monads
*
* @see The `monet` library by Chris Myers and Jakub Strojewski of which this monad implementation is heavily inspired
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.swap = exports.noop = exports.isFunction = exports.idFunction = exports.getArgs = exports.falseFunction = exports.equals = exports.areEqual = void 0;
const areEqual = (a, b) => {
if (a === b || a !== a && b !== b) {
return true;
}
if (!a || !b) { // eslint-disable-line @typescript-eslint/strict-boolean-expressions
return false;
}
/* eslint-disable @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-return,@typescript-eslint/no-unsafe-call */
if ((0, exports.isFunction)(a.equals) && (0, exports.isFunction)(b.equals)) {
return a.equals(b);
}
/* eslint-enable @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-return,@typescript-eslint/no-unsafe-call */
return false;
};
exports.areEqual = areEqual;
const equals = (a) => (b) => (0, exports.areEqual)(a, b);
exports.equals = equals;
const falseFunction = () => false;
exports.falseFunction = falseFunction;
const getArgs = (args) => Array.prototype.slice.call(args);
exports.getArgs = getArgs;
const idFunction = (value) => value;
exports.idFunction = idFunction;
const isFunction = (f) => Boolean(f && f.constructor && f.call && f.apply); // eslint-disable-line @typescript-eslint/strict-boolean-expressions, @typescript-eslint/no-unsafe-member-access
exports.isFunction = isFunction;
const noop = () => { }; // eslint-disable-line @typescript-eslint/no-empty-function
exports.noop = noop;
const swap = (f) => (a, b) => f(b, a); // eslint-disable-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call
exports.swap = swap;
//# sourceMappingURL=index.js.map