Add support for coercing null or undefined

This commit is contained in:
Endeavorance 2025-05-21 15:07:06 -04:00
parent 3252c741ec
commit 5ce10bed57
2 changed files with 11 additions and 5 deletions

View file

@ -1,6 +1,6 @@
{
"name": "@endeavorance/parsec",
"version": "0.4.0",
"version": "0.5.0",
"author": "Endeavorance",
"type": "module",
"module": "dist/index.js",

View file

@ -203,9 +203,12 @@ export const Parse = {
};
},
optional<T>(parser: (val: unknown) => T): (val: unknown) => T | undefined {
optional<T>(
parser: (val: unknown) => T,
coerceNull = false,
): (val: unknown) => T | undefined {
return (val: unknown) => {
if (val === undefined) {
if (val === undefined || (coerceNull && val === null)) {
return undefined;
}
@ -213,9 +216,12 @@ export const Parse = {
};
},
nullable<T>(parser: (val: unknown) => T): (val: unknown) => T | null {
nullable<T>(
parser: (val: unknown) => T,
coerceUndefined = false,
): (val: unknown) => T | null {
return (val: unknown) => {
if (val === null) {
if (val === null || (coerceUndefined && val === undefined)) {
return null;
}