diff --git a/src/common.mts b/src/common.mts index 21c934e..997ee77 100644 --- a/src/common.mts +++ b/src/common.mts @@ -97,6 +97,9 @@ export function BuildCommonTypeName(name: string | ts.Identifier) { * @returns The parsed number or NaN if the value is not a valid number. */ export function safeParseNumber(value: unknown): number { + if (typeof value === "string" && value.trim() === "") { + return Number.NaN; + } const parsed = Number(value); if (!Number.isNaN(parsed) && Number.isFinite(parsed)) { return parsed; diff --git a/tests/common.test.ts b/tests/common.test.ts index ccbe714..53fe36e 100644 --- a/tests/common.test.ts +++ b/tests/common.test.ts @@ -37,6 +37,9 @@ describe("common", () => { const falseVal = safeParseNumber(false); expect(falseVal).toBe(0); + + const emptyString = safeParseNumber(""); + expect(emptyString).toBeNaN(); }); test("capitalizeFirstLetter", () => { @@ -182,6 +185,19 @@ describe("common", () => { expect(formatted.lint).toStrictEqual("eslint"); }); + test("formatOptions - preserves an empty initial page parameter", () => { + const options: LimitedUserConfig = { + input: "input", + output: "output", + pageParam: "page", + nextPageParam: "nextPage", + initialPageParam: "", + }; + const formatted = formatOptions(options); + + expect(formatted.initialPageParam).toBe(""); + }); + test("formatOptions - converts string number to number", () => { const options: LimitedUserConfig = { input: "input",