diff --git a/package.json b/package.json index cd1f625..73dd587 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@endeavorance/parsec", - "version": "0.4.0", + "version": "0.5.0", "author": "Endeavorance", "type": "module", "module": "dist/index.js", diff --git a/src/index.ts b/src/index.ts index 6877eea..d087f55 100644 --- a/src/index.ts +++ b/src/index.ts @@ -203,9 +203,12 @@ export const Parse = { }; }, - optional(parser: (val: unknown) => T): (val: unknown) => T | undefined { + optional( + 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(parser: (val: unknown) => T): (val: unknown) => T | null { + nullable( + parser: (val: unknown) => T, + coerceUndefined = false, + ): (val: unknown) => T | null { return (val: unknown) => { - if (val === null) { + if (val === null || (coerceUndefined && val === undefined)) { return null; }