diff --git a/app/utils/zod.test.ts b/app/utils/zod.test.ts index abd67e018..cd5cbe844 100644 --- a/app/utils/zod.test.ts +++ b/app/utils/zod.test.ts @@ -77,6 +77,18 @@ describe("actuallyNonEmptyStringOrNull", () => { it("returns null for a string with only tag space emoji", () => { expect(actuallyNonEmptyStringOrNull("󠀠󠀠󠀠󠀠󠀠")).toBeNull(); }); + + it("returns null for a string with only Hangul Filler", () => { + expect(actuallyNonEmptyStringOrNull("\u3164")).toBeNull(); + expect(actuallyNonEmptyStringOrNull("ㅤㅤㅤ")).toBeNull(); + }); + + it("returns null for other invisible characters", () => { + expect(actuallyNonEmptyStringOrNull("\u115F")).toBeNull(); + expect(actuallyNonEmptyStringOrNull("\u1160")).toBeNull(); + expect(actuallyNonEmptyStringOrNull("\uFEFF")).toBeNull(); + expect(actuallyNonEmptyStringOrNull("\u2060")).toBeNull(); + }); }); describe("timeString", () => { diff --git a/app/utils/zod.ts b/app/utils/zod.ts index 30b03ca56..5e1d4bfd6 100644 --- a/app/utils/zod.ts +++ b/app/utils/zod.ts @@ -164,7 +164,19 @@ export function safeJSONParse(value: unknown): unknown { } } -const EMPTY_CHARACTERS = ["\u200B", "\u200C", "\u200D", "\u200E", "\u200F", "󠀠"]; +const EMPTY_CHARACTERS = [ + "\u200B", + "\u200C", + "\u200D", + "\u200E", + "\u200F", + "󠀠", + "\u3164", + "\u115F", + "\u1160", + "\uFEFF", + "\u2060", +]; const EMPTY_CHARACTERS_REGEX = new RegExp(EMPTY_CHARACTERS.join("|"), "g"); const zalgoRe = /%CC%/g;