Merge pull request #3172 from code-yeongyu/fix/bom-strip-jsonc

fix(jsonc-parser): strip UTF-8 BOM before parsing
This commit is contained in:
YeonGyu-Kim
2026-04-07 14:51:00 +09:00
committed by GitHub
2 changed files with 30 additions and 0 deletions
+27
View File
@@ -139,6 +139,33 @@ describe("parseJsonc", () => {
// then
expect(() => parseJsonc(invalid)).toThrow()
})
test("parses JSONC with UTF-8 BOM (Windows BOM files)", () => {
// given - JSON with UTF-8 BOM marker
const bom = "\uFEFF"
const jsonc = `${bom}{ "key": "value" }`
// when
const result = parseJsonc<{ key: string }>(jsonc)
// then
expect(result.key).toBe("value")
})
test("parses JSONC with BOM and comments", () => {
// given - JSONC with UTF-8 BOM and comments
const bom = "\uFEFF"
const jsonc = `${bom}{
// Windows editor saved with BOM
"key": "value"
}`
// when
const result = parseJsonc<{ key: string }>(jsonc)
// then
expect(result.key).toBe("value")
})
})
describe("parseJsoncSafe", () => {
+3
View File
@@ -10,6 +10,9 @@ export interface JsoncParseResult<T> {
}
export function parseJsonc<T = unknown>(content: string): T {
// Strip UTF-8 BOM if present (Windows UTF-8 with BOM files)
content = content.replace(/^\uFEFF/, "")
const errors: ParseError[] = []
const result = parse(content, errors, {
allowTrailingComma: true,