From 3e85db81105e97e59e830f3431ee5b7abe981974 Mon Sep 17 00:00:00 2001 From: Jan Laupetin Date: Sat, 14 Mar 2026 08:37:26 +0100 Subject: [PATCH] fix: header transformation plugin not properly handling utf-8 characters --- src/ModManUi/build/HeaderTransformationPlugin.ts | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/ModManUi/build/HeaderTransformationPlugin.ts b/src/ModManUi/build/HeaderTransformationPlugin.ts index ab028e0b..86e675f6 100644 --- a/src/ModManUi/build/HeaderTransformationPlugin.ts +++ b/src/ModManUi/build/HeaderTransformationPlugin.ts @@ -12,6 +12,8 @@ interface PublicDirFile { relativePath: string; } +const textEncoder = new TextEncoder(); + function getPublicDirFiles(publicDir?: string): PublicDirFile[] { if (!publicDir) return []; @@ -41,20 +43,23 @@ function createVarName(fileName: string) { function transformAsset(asset: MinimalOutputAsset) { const varName = createVarName(asset.fileName); - let bytes: string; + let buffer: Uint8Array; if (typeof asset.source === "string") { - bytes = [...asset.source].map((v) => String(v.charCodeAt(0))).join(","); + buffer = textEncoder.encode(asset.source); } else { - bytes = [...asset.source].map((v) => String(v)).join(","); + buffer = asset.source; } + const bytes = [...buffer].map((v) => String(v)).join(","); + return `constexpr const unsigned char ${varName}[] {${bytes}}; `; } function transformChunk(chunk: MinimalOutputChunk) { const varName = createVarName(chunk.fileName); - const bytes = [...chunk.code].map((v) => String(v.charCodeAt(0))).join(","); + const buffer = textEncoder.encode(chunk.code); + const bytes = [...buffer].map((v) => String(v)).join(","); return `constexpr const unsigned char ${varName}[] {${bytes}}; `;