is-kit

parse

Runtime-safe validation helpers returning tagged results. safeJsonParse decodes JSON text to unknown before applying a guard.

import { safeJsonParse, safeParse, safeParseWith, predicateToRefine, and, typedStruct, isString, isNumber } from 'is-kit';
const parseResult1 = safeParse(isString, 'ok');
if (parseResult1.valid) {
parseResult1.value; // string
}
const isEven = predicateToRefine<number>((num) => num % 2 === 0);
const isEvenNumber = and(isNumber, isEven);
const parseEven = safeParseWith(isEvenNumber);
const parseResult2 = parseEven(4); // { valid: true, value: 4 }
type User = { id: string; name: string };
const isUser = typedStruct<User>()({ id: isString, name: isString });
const userResult = safeJsonParse('{"id":"1","name":"Ada"}', isUser);
// JSON is decoded to unknown, then validated without coercion.