perlica
Version:
<h1 align="center">Perlica</h1>
88 lines (87 loc) • 2.56 kB
JavaScript
// src/Predicate/index.ts
var not = (self) => (value) => !self(value);
var and = (self, that) => (value) => self(value) && that(value);
var or = (self, that) => (value) => self(value) || that(value);
var all = (predicates) => {
return (value) => {
for (const p of predicates) {
if (p(value) === false) {
return false;
}
}
return true;
};
};
var any = (predicates) => {
return (value) => {
for (const p of predicates) {
if (p(value) === true) {
return true;
}
}
return false;
};
};
var eq = (that) => (value) => value === that;
var ne = (that) => (value) => value !== that;
var isTruthy = (value) => !!value;
var isNull = (value) => value === null;
var isNotNull = (value) => value !== null;
var isUndefined = (value) => value === void 0;
var isNotUndefined = (value) => value !== void 0;
var isBoolean = (value) => typeof value === "boolean";
var isNumber = (value) => typeof value === "number";
var isInteger = (value) => Number.isInteger(value);
var isBigInt = (value) => typeof value === "bigint";
var isString = (value) => typeof value === "string";
var isArray = (value) => Array.isArray(value);
var isFunction = (value) => typeof value === "function";
var isSymbol = (value) => typeof value === "symbol";
var isSet = (value) => value instanceof Set;
var isMap = (value) => value instanceof Map;
var isRegExp = (value) => value instanceof RegExp;
var isError = (value) => value instanceof Error;
var isNullable = (value) => isNull(value) || isUndefined(value);
var isNotNullable = (value) => isNotNull(value) && isNotUndefined(value);
var isPromise = (value) => hasProperty(value, "then") && hasProperty(value, "catch") && isFunction(value.then) && isFunction(value.catch);
var isDate = (value) => value instanceof Date;
var isRecordOrArray = (value) => typeof value === "object" && isNotNull(value);
var isObject = (value) => isRecordOrArray(value) || isFunction(value);
var hasProperty = (value, property) => isObject(value) && property in value;
var isIterable = (value) => hasProperty(value, Symbol.iterator);
var isAsyncIterable = (value) => hasProperty(value, Symbol.asyncIterator);
export {
all,
and,
any,
eq,
hasProperty,
isArray,
isAsyncIterable,
isBigInt,
isBoolean,
isDate,
isError,
isFunction,
isInteger,
isIterable,
isMap,
isNotNull,
isNotNullable,
isNotUndefined,
isNull,
isNullable,
isNumber,
isObject,
isPromise,
isRecordOrArray,
isRegExp,
isSet,
isString,
isSymbol,
isTruthy,
isUndefined,
ne,
not,
or
};