<< All versions
Skill v1.0.0
currentLLM-judged scan90/100senrecep/tsentials/tsentials-predicate
──Details
PublishedOctober 16, 2026 at 06:22 PM
Content Hashsha256:666d466641b0dfed...
Git SHA67da40873698
──Files
Files (1 file, 1.2 KB)
SKILL.md1.2 KBactive
SKILL.md · 42 lines · 1.2 KB
version: "1.0.0"
tsentials/predicate — Skill
Use when you need composable, reusable boolean conditions.
API
typescript
import { Predicate } from 'tsentials/predicate';import type { Refinement } from 'tsentials/predicate';// Create predicatesconst isAdult = Predicate.from((u: User) => u.age >= 18);const isActive = Predicate.from((u: User) => u.isActive);// Combine with logic operatorsPredicate.and(isAdult, isActive);Predicate.or(isAdult, isGuest);Predicate.not(isAdult);// Combine manyPredicate.all(isAdult, isActive, hasBalance);Predicate.any(isAdmin, isModerator);// Refinement (type guard)const isString = Predicate.refinement((x: unknown): x is string => typeof x === 'string');const isNumber = Predicate.refinement((x: unknown): x is number => typeof x === 'number');// Combine refinements (narrows to intersection)const isStringAndNumber = Predicate.andRefinement(isString, isNumber); // Refinement<unknown, string & number>// Convert predicate to a Rule-compatible functionPredicate.toRule(isAdult, validationError); // (value) => error | undefined
Patterns
- Use
Predicate.and/Predicate.orinstead of inline&&/||for reusable conditions. - Convert a
Predicateto aRulewithPredicate.toRule.