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", "name": "@endeavorance/parsec",
"version": "0.4.0", "version": "0.5.0",
"author": "Endeavorance", "author": "Endeavorance",
"type": "module", "type": "module",
"module": "dist/index.js", "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) => { return (val: unknown) => {
if (val === undefined) { if (val === undefined || (coerceNull && val === null)) {
return undefined; 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) => { return (val: unknown) => {
if (val === null) { if (val === null || (coerceUndefined && val === undefined)) {
return null; return null;
} }